You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
3.5KB

  1. CREATE TABLE IF NOT EXISTS app_settings (
  2. id INTEGER PRIMARY KEY CHECK (id = 1),
  3. qc_base_url TEXT NOT NULL DEFAULT '',
  4. qc_bearer_token_encrypted TEXT NOT NULL DEFAULT '',
  5. language_output_mode TEXT NOT NULL DEFAULT 'EN',
  6. job_poll_interval_seconds INTEGER NOT NULL DEFAULT 5,
  7. job_poll_timeout_seconds INTEGER NOT NULL DEFAULT 300,
  8. updated_at TEXT NOT NULL
  9. );
  10. CREATE TABLE IF NOT EXISTS qc_templates (
  11. id INTEGER PRIMARY KEY,
  12. name TEXT NOT NULL,
  13. description TEXT NOT NULL DEFAULT '',
  14. locale TEXT NOT NULL DEFAULT '',
  15. thumbnail_url TEXT NOT NULL DEFAULT '',
  16. template_preview_url TEXT NOT NULL DEFAULT '',
  17. type TEXT NOT NULL DEFAULT '',
  18. palette_ready INTEGER NOT NULL DEFAULT 0,
  19. raw_template_json BLOB,
  20. is_ai_template INTEGER NOT NULL DEFAULT 0,
  21. is_onboarded INTEGER NOT NULL DEFAULT 0,
  22. manifest_status TEXT NOT NULL DEFAULT 'missing',
  23. last_discovered_at TEXT,
  24. updated_at TEXT NOT NULL
  25. );
  26. CREATE TABLE IF NOT EXISTS qc_template_manifests (
  27. id TEXT PRIMARY KEY,
  28. template_id INTEGER NOT NULL,
  29. manifest_version INTEGER NOT NULL,
  30. source TEXT NOT NULL,
  31. language_used_discovery TEXT NOT NULL,
  32. discovery_payload_json BLOB,
  33. discovery_response_json BLOB,
  34. flattened_manifest_json BLOB,
  35. is_active INTEGER NOT NULL DEFAULT 1,
  36. created_at TEXT NOT NULL,
  37. updated_at TEXT NOT NULL,
  38. FOREIGN KEY (template_id) REFERENCES qc_templates(id) ON DELETE CASCADE
  39. );
  40. CREATE INDEX IF NOT EXISTS idx_manifests_template_active ON qc_template_manifests(template_id, is_active);
  41. CREATE TABLE IF NOT EXISTS qc_template_fields (
  42. id TEXT PRIMARY KEY,
  43. template_id INTEGER NOT NULL,
  44. manifest_id TEXT NOT NULL,
  45. section TEXT NOT NULL,
  46. key_name TEXT NOT NULL,
  47. path TEXT NOT NULL,
  48. field_kind TEXT NOT NULL,
  49. sample_value TEXT NOT NULL DEFAULT '',
  50. is_enabled INTEGER NOT NULL DEFAULT 1,
  51. is_required_by_us INTEGER NOT NULL DEFAULT 0,
  52. display_label TEXT NOT NULL DEFAULT '',
  53. display_order INTEGER NOT NULL DEFAULT 0,
  54. notes TEXT NOT NULL DEFAULT '',
  55. FOREIGN KEY (template_id) REFERENCES qc_templates(id) ON DELETE CASCADE,
  56. FOREIGN KEY (manifest_id) REFERENCES qc_template_manifests(id) ON DELETE CASCADE,
  57. UNIQUE(template_id, manifest_id, path)
  58. );
  59. CREATE INDEX IF NOT EXISTS idx_fields_manifest ON qc_template_fields(manifest_id);
  60. CREATE TABLE IF NOT EXISTS site_builds (
  61. id TEXT PRIMARY KEY,
  62. template_id INTEGER NOT NULL,
  63. manifest_id TEXT NOT NULL,
  64. request_name TEXT NOT NULL,
  65. global_data_json BLOB,
  66. ai_data_json BLOB,
  67. final_sites_payload_json BLOB,
  68. qc_job_id INTEGER,
  69. qc_site_id INTEGER,
  70. qc_status TEXT NOT NULL,
  71. qc_preview_url TEXT NOT NULL DEFAULT '',
  72. qc_editor_url TEXT NOT NULL DEFAULT '',
  73. qc_result_json BLOB,
  74. qc_error_json BLOB,
  75. started_at TEXT,
  76. finished_at TEXT,
  77. FOREIGN KEY (template_id) REFERENCES qc_templates(id) ON DELETE RESTRICT,
  78. FOREIGN KEY (manifest_id) REFERENCES qc_template_manifests(id) ON DELETE RESTRICT
  79. );
  80. CREATE INDEX IF NOT EXISTS idx_builds_status ON site_builds(qc_status);
  81. CREATE TABLE IF NOT EXISTS build_drafts (
  82. id TEXT PRIMARY KEY,
  83. template_id INTEGER NOT NULL,
  84. manifest_id TEXT NOT NULL DEFAULT '',
  85. source TEXT NOT NULL DEFAULT 'ui',
  86. request_name TEXT NOT NULL DEFAULT '',
  87. global_data_json BLOB,
  88. field_values_json BLOB,
  89. status TEXT NOT NULL DEFAULT 'draft',
  90. notes TEXT NOT NULL DEFAULT '',
  91. created_at TEXT NOT NULL,
  92. updated_at TEXT NOT NULL,
  93. FOREIGN KEY (template_id) REFERENCES qc_templates(id) ON DELETE RESTRICT
  94. );
  95. CREATE INDEX IF NOT EXISTS idx_drafts_updated_at ON build_drafts(updated_at DESC);