schema.sql 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. last_updated_at DATETIME,
  28. created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  29. updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
  30. );
  31. CREATE UNIQUE INDEX IF NOT EXISTS idx_records_zone_cf ON records(zone_id, cf_record_id);
  32. -- Settings table
  33. CREATE TABLE IF NOT EXISTS settings (
  34. key TEXT PRIMARY KEY,
  35. value TEXT NOT NULL
  36. );
  37. INSERT OR IGNORE INTO settings (key, value) VALUES ('cron_schedule', '@every 1m');
  38. -- IP providers table
  39. CREATE TABLE IF NOT EXISTS ip_providers (
  40. id INTEGER PRIMARY KEY AUTOINCREMENT,
  41. url TEXT NOT NULL UNIQUE,
  42. name TEXT NOT NULL DEFAULT '',
  43. enabled INTEGER NOT NULL DEFAULT 1,
  44. priority INTEGER NOT NULL DEFAULT 0,
  45. created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  46. updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
  47. );
  48. INSERT OR IGNORE INTO ip_providers (url, name, enabled, priority) VALUES
  49. ('https://api.ipify.org', 'ipify', 1, 0),
  50. ('https://ifconfig.me/ip', 'ifconfig.me', 1, 1),
  51. ('https://icanhazip.com', 'icanhazip', 1, 2);