CREATE TABLE backup_targets ( id TEXT PRIMARY KEY, name TEXT NOT NULL, kind TEXT NOT NULL CHECK (kind IN ('smb', 'ftp')), host TEXT NOT NULL, port INTEGER, share TEXT NOT NULL DEFAULT '', path TEXT NOT NULL DEFAULT '', username TEXT NOT NULL DEFAULT '', password TEXT NOT NULL DEFAULT '', tls INTEGER NOT NULL DEFAULT 0 ); CREATE TABLE backup_strategies ( id TEXT PRIMARY KEY, name TEXT NOT NULL, source TEXT NOT NULL, schedule TEXT NOT NULL, target_id TEXT NOT NULL REFERENCES backup_targets(id), retention INTEGER NOT NULL, passphrase TEXT, enabled INTEGER NOT NULL DEFAULT 1 ); CREATE TABLE backup_records ( id TEXT PRIMARY KEY, strategy_id TEXT NOT NULL REFERENCES backup_strategies(id) ON DELETE CASCADE, filename TEXT NOT NULL, size_bytes INTEGER NOT NULL, sha256 TEXT NOT NULL, created_at TEXT NOT NULL ); CREATE INDEX backup_records_strategy ON backup_records(strategy_id, created_at DESC);