Docker images / prepare-release (push) Successful in 9s
Docker images / backend-test (push) Successful in 2m18s
Docker images / frontend-image (push) Successful in 4m37s
Docker images / updater-image (push) Successful in 46s
Docker images / backend-image (push) Successful in 3m6s
Docker images / notify-webhook (push) Skipped
Docker images / publish-release (push) Successful in 16s
Сохранять снимки в S3-compatible бакет, скачивать и удалять их вместе с локальными файлами. Привести /backups к DNA /servers: Frame, KPI, фильтры и реальное восстановление. Co-authored-by: Cursor <cursoragent@cursor.com>
45 lines
1.3 KiB
SQL
45 lines
1.3 KiB
SQL
-- S3-compatible storage for RouterOS backups
|
|
|
|
CREATE TABLE IF NOT EXISTS backup_storage_settings (
|
|
id BIGINT PRIMARY KEY CHECK (id = 1),
|
|
provider TEXT NOT NULL DEFAULT 'local' CHECK (provider IN ('local', 's3')),
|
|
s3_endpoint TEXT NOT NULL DEFAULT '',
|
|
s3_region TEXT NOT NULL DEFAULT 'us-east-1',
|
|
s3_bucket TEXT NOT NULL DEFAULT '',
|
|
s3_prefix TEXT NOT NULL DEFAULT 'mikrotik',
|
|
s3_access_key_id TEXT NOT NULL DEFAULT '',
|
|
s3_secret_access_key TEXT NOT NULL DEFAULT '',
|
|
s3_force_path_style BOOLEAN NOT NULL DEFAULT TRUE,
|
|
keep_local_copy BOOLEAN NOT NULL DEFAULT TRUE,
|
|
last_test_at TIMESTAMPTZ,
|
|
last_test_error TEXT,
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
INSERT INTO backup_storage_settings (id)
|
|
VALUES (1)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
ALTER TABLE backup_entries
|
|
ADD COLUMN IF NOT EXISTS storage TEXT NOT NULL DEFAULT 'local';
|
|
|
|
ALTER TABLE backup_entries
|
|
ADD COLUMN IF NOT EXISTS s3_key TEXT;
|
|
|
|
ALTER TABLE backup_entries
|
|
ADD COLUMN IF NOT EXISTS s3_etag TEXT;
|
|
|
|
ALTER TABLE backup_entries
|
|
ADD COLUMN IF NOT EXISTS upload_error TEXT;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM pg_constraint WHERE conname = 'backup_entries_storage_check'
|
|
) THEN
|
|
ALTER TABLE backup_entries
|
|
ADD CONSTRAINT backup_entries_storage_check
|
|
CHECK (storage IN ('local', 's3', 'both'));
|
|
END IF;
|
|
END $$;
|