000001_initial_schema.up.sql 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. -- Users table
  2. CREATE TABLE IF NOT EXISTS users (
  3. id INTEGER PRIMARY KEY AUTOINCREMENT,
  4. username TEXT NOT NULL UNIQUE,
  5. password_hash TEXT NOT NULL,
  6. created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
  7. );
  8. -- Zones table
  9. CREATE TABLE IF NOT EXISTS zones (
  10. id INTEGER PRIMARY KEY AUTOINCREMENT,
  11. zone_id TEXT NOT NULL UNIQUE,
  12. name TEXT NOT NULL,
  13. api_key TEXT NOT NULL,
  14. created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  15. updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
  16. );
  17. -- Records table
  18. CREATE TABLE IF NOT EXISTS records (
  19. id INTEGER PRIMARY KEY AUTOINCREMENT,
  20. zone_id INTEGER NOT NULL REFERENCES zones(id) ON DELETE CASCADE,
  21. cf_record_id TEXT NOT NULL,
  22. name TEXT NOT NULL,
  23. type TEXT NOT NULL DEFAULT 'A',
  24. content TEXT NOT NULL,
  25. proxied INTEGER NOT NULL DEFAULT 0,
  26. is_static INTEGER NOT NULL DEFAULT 0,
  27. created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  28. updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
  29. );
  30. CREATE UNIQUE INDEX IF NOT EXISTS idx_records_zone_cf ON records(zone_id, cf_record_id);
  31. -- Settings table
  32. CREATE TABLE IF NOT EXISTS settings (
  33. key TEXT PRIMARY KEY,
  34. value TEXT NOT NULL
  35. );
  36. INSERT OR IGNORE INTO settings (key, value) VALUES ('cron_schedule', '@every 1m');
  37. -- IP providers table
  38. CREATE TABLE IF NOT EXISTS ip_providers (
  39. id INTEGER PRIMARY KEY AUTOINCREMENT,
  40. url TEXT NOT NULL UNIQUE,
  41. name TEXT NOT NULL DEFAULT '',
  42. enabled INTEGER NOT NULL DEFAULT 1,
  43. priority INTEGER NOT NULL DEFAULT 0,
  44. created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  45. updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
  46. );
  47. INSERT OR IGNORE INTO ip_providers (url, name, enabled, priority) VALUES
  48. ('https://api.ipify.org', 'ipify', 1, 0),
  49. ('https://ifconfig.me/ip', 'ifconfig.me', 1, 1),
  50. ('https://icanhazip.com', 'icanhazip', 1, 2);