schema.sql 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. BEGIN TRANSACTION;
  2. CREATE TABLE IF NOT EXISTS "params" (
  3. "name" TEXT NOT NULL UNIQUE,
  4. "value" TEXT NOT NULL,
  5. PRIMARY KEY("name")
  6. );
  7. INSERT INTO "params"("name", "value") VALUES('instance_bucket_tokens', '0');
  8. INSERT INTO "params"("name", "value") VALUES('instance_bucket_last_update', '0');
  9. INSERT INTO "params"("name", "value") VALUES('secret_key', '0');
  10. INSERT INTO "params"("name", "value") VALUES('secret_key_last_change', '0');
  11. INSERT INTO "params"("name", "value") VALUES('username_salt', '00000000000000000000000000000000'); -- Should be unique and secret ; generate one using `openssl rand -hex 16` ; can't be changed without breaking current accounts login
  12. CREATE TABLE IF NOT EXISTS "users" (
  13. "id" TEXT NOT NULL UNIQUE CHECK (LENGTH(id) = 64),
  14. "username" TEXT NOT NULL UNIQUE,
  15. "password" TEXT NOT NULL,
  16. "registration_date" TEXT NOT NULL,
  17. "bucket_tokens" INTEGER NOT NULL,
  18. "bucket_last_update" INTEGER NOT NULL,
  19. "type" TEXT NOT NULL,
  20. "services" TEXT NOT NULL,
  21. "medium" TEXT NOT NULL DEFAULT "",
  22. PRIMARY KEY("id")
  23. );
  24. CREATE TABLE IF NOT EXISTS "approval-keys" (
  25. "key" TEXT NOT NULL UNIQUE,
  26. PRIMARY KEY("key")
  27. );
  28. CREATE TABLE IF NOT EXISTS "registry" (
  29. "domain" TEXT NOT NULL UNIQUE,
  30. "username" TEXT NOT NULL,
  31. "creation" TEXT NOT NULL,
  32. PRIMARY KEY("domain"),
  33. FOREIGN KEY("username") REFERENCES "users"("id")
  34. );
  35. CREATE TABLE IF NOT EXISTS "registry-history" (
  36. "domain" TEXT NOT NULL,
  37. "creation" TEXT NOT NULL,
  38. "expiration" TEXT NOT NULL
  39. );
  40. CREATE TABLE IF NOT EXISTS "zones" (
  41. "zone" TEXT NOT NULL UNIQUE,
  42. "username" TEXT NOT NULL,
  43. PRIMARY KEY("zone"),
  44. FOREIGN KEY("username") REFERENCES "users"("id")
  45. );
  46. CREATE TABLE IF NOT EXISTS "ns-syncs" (
  47. "username" TEXT NOT NULL,
  48. "source" TEXT NOT NULL,
  49. "destination" TEXT NOT NULL UNIQUE,
  50. FOREIGN KEY("username") REFERENCES "users"("id"),
  51. FOREIGN KEY("destination") REFERENCES "zones"("zone")
  52. );
  53. CREATE TABLE IF NOT EXISTS "sites" (
  54. "username" TEXT NOT NULL,
  55. "site_dir" TEXT NOT NULL,
  56. "address" TEXT NOT NULL,
  57. "type" TEXT NOT NULL,
  58. "creation_date" TEXT NOT NULL,
  59. UNIQUE("address", "type"),
  60. UNIQUE("username", "site_dir", "type"),
  61. PRIMARY KEY("address", "type"),
  62. FOREIGN KEY("username") REFERENCES "users"("id")
  63. );
  64. CREATE TABLE IF NOT EXISTS "ssh-keys" (
  65. "key" TEXT NOT NULL,
  66. "username" TEXT NOT NULL,
  67. "directory" TEXT NOT NULL,
  68. UNIQUE("key", "username", "directory"),
  69. FOREIGN KEY("username") REFERENCES "users"("id")
  70. );
  71. COMMIT;