Files
mikrotik-backup/migrations/001_initial.sql
T
2026-10-28 09:16:54 +01:00

81 lines
2.9 KiB
SQL

CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
username TEXT NOT NULL UNIQUE,
password_hash TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
preferred_language TEXT NOT NULL DEFAULT 'en',
preferred_font TEXT NOT NULL DEFAULT 'default'
);
CREATE TABLE IF NOT EXISTS routers (
id INTEGER PRIMARY KEY,
owner_id INTEGER NOT NULL REFERENCES users(id),
name TEXT NOT NULL,
device_type TEXT NOT NULL DEFAULT 'routeros',
host TEXT NOT NULL,
port INTEGER NOT NULL DEFAULT 22,
ssh_user TEXT NOT NULL DEFAULT 'admin',
ssh_key TEXT,
ssh_password TEXT,
last_connection_status INTEGER,
last_connection_tested_at TEXT,
last_connection_error TEXT,
last_connection_hostname TEXT,
last_connection_model TEXT,
last_connection_version TEXT,
last_connection_uptime TEXT,
last_connection_transport TEXT,
last_connection_server TEXT,
last_connection_auth_mode TEXT,
last_connection_http_status TEXT,
last_connection_backup_available INTEGER,
disable_all_backups INTEGER NOT NULL DEFAULT 0,
disable_export_backups INTEGER NOT NULL DEFAULT 0,
disable_binary_backups INTEGER NOT NULL DEFAULT 0,
disable_ping INTEGER NOT NULL DEFAULT 0,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS backups (
id INTEGER PRIMARY KEY,
router_id INTEGER NOT NULL REFERENCES routers(id) ON DELETE CASCADE,
file_path TEXT NOT NULL,
file_name TEXT NOT NULL,
backup_type TEXT NOT NULL DEFAULT 'export',
checksum TEXT,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS operation_logs (
id INTEGER PRIMARY KEY,
message TEXT NOT NULL,
timestamp TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS global_settings (
id INTEGER PRIMARY KEY,
backup_retention_days INTEGER DEFAULT 7,
log_retention_days INTEGER DEFAULT 7,
export_cron TEXT DEFAULT '',
binary_cron TEXT DEFAULT '',
retention_cron TEXT DEFAULT '',
enable_auto_export INTEGER DEFAULT 0,
connection_test_interval_minutes INTEGER DEFAULT 0,
global_ssh_key TEXT,
default_switchos_username TEXT,
default_switchos_password TEXT,
pushover_token TEXT,
pushover_userkey TEXT,
notify_failures_only INTEGER DEFAULT 1,
smtp_host TEXT,
smtp_port INTEGER DEFAULT 587,
smtp_login TEXT,
smtp_password TEXT,
smtp_notifications_enabled INTEGER DEFAULT 0,
recipient_email TEXT
);
CREATE INDEX IF NOT EXISTS ix_routers_owner_id ON routers(owner_id);
CREATE INDEX IF NOT EXISTS ix_backups_router_id ON backups(router_id);
CREATE INDEX IF NOT EXISTS ix_backups_created_at ON backups(created_at);
CREATE INDEX IF NOT EXISTS ix_operation_logs_timestamp ON operation_logs(timestamp);
CREATE TABLE IF NOT EXISTS rust_schema_migrations (
version INTEGER PRIMARY KEY,
applied_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
);