81 lines
2.9 KiB
SQL
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
|
|
);
|