-- Users table CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL UNIQUE, password_hash TEXT NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ); -- Zones table CREATE TABLE IF NOT EXISTS zones ( id INTEGER PRIMARY KEY AUTOINCREMENT, zone_id TEXT NOT NULL UNIQUE, name TEXT NOT NULL, api_key TEXT NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ); -- Records table CREATE TABLE IF NOT EXISTS records ( id INTEGER PRIMARY KEY AUTOINCREMENT, zone_id INTEGER NOT NULL REFERENCES zones(id) ON DELETE CASCADE, cf_record_id TEXT NOT NULL, name TEXT NOT NULL, type TEXT NOT NULL DEFAULT 'A', content TEXT NOT NULL, proxied INTEGER NOT NULL DEFAULT 0, is_static INTEGER NOT NULL DEFAULT 0, last_updated_at DATETIME, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE UNIQUE INDEX IF NOT EXISTS idx_records_zone_cf ON records(zone_id, cf_record_id); -- Settings table CREATE TABLE IF NOT EXISTS settings ( key TEXT PRIMARY KEY, value TEXT NOT NULL ); INSERT OR IGNORE INTO settings (key, value) VALUES ('cron_schedule', '@every 1m'); -- IP providers table CREATE TABLE IF NOT EXISTS ip_providers ( id INTEGER PRIMARY KEY AUTOINCREMENT, url TEXT NOT NULL UNIQUE, name TEXT NOT NULL DEFAULT '', enabled INTEGER NOT NULL DEFAULT 1, priority INTEGER NOT NULL DEFAULT 0, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ); INSERT OR IGNORE INTO ip_providers (url, name, enabled, priority) VALUES ('https://api.ipify.org', 'ipify', 1, 0), ('https://ifconfig.me/ip', 'ifconfig.me', 1, 1), ('https://icanhazip.com', 'icanhazip', 1, 2);