@storyshelf/db-mysql 0.6.2 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +36 -0
  2. package/dist/ddl.d.mts +1 -3
  3. package/dist/ddl.mjs +391 -141
  4. package/dist/ddl.mjs.map +1 -1
  5. package/dist/drizzle-factory-mysql.mjs +15 -8
  6. package/dist/drizzle-factory-mysql.mjs.map +1 -1
  7. package/dist/drizzle-factory.mjs +1 -2
  8. package/dist/foreign-keys.mjs +338 -0
  9. package/dist/foreign-keys.mjs.map +1 -0
  10. package/dist/index.d.mts +0 -2
  11. package/dist/index.mjs +11 -7
  12. package/dist/index.mjs.map +1 -1
  13. package/dist/migrate.mjs +349 -73
  14. package/dist/migrate.mjs.map +1 -1
  15. package/dist/planetscale.d.mts +0 -2
  16. package/dist/planetscale.mjs +1 -2
  17. package/dist/schema/baseline.d.mts +89 -19
  18. package/dist/schema/baseline.mjs +8 -4
  19. package/dist/schema/baseline.mjs.map +1 -1
  20. package/dist/schema/{status-config.d.mts → build-component.d.mts} +47 -42
  21. package/dist/schema/build-component.mjs +25 -0
  22. package/dist/schema/build-component.mjs.map +1 -0
  23. package/dist/schema/build-review.d.mts +116 -0
  24. package/dist/schema/build-review.mjs +23 -0
  25. package/dist/schema/build-review.mjs.map +1 -0
  26. package/dist/schema/build.d.mts +65 -31
  27. package/dist/schema/build.mjs +6 -3
  28. package/dist/schema/build.mjs.map +1 -1
  29. package/dist/schema/capture-attempt.d.mts +43 -45
  30. package/dist/schema/capture-attempt.mjs +3 -3
  31. package/dist/schema/capture-attempt.mjs.map +1 -1
  32. package/dist/schema/capture-job.d.mts +328 -0
  33. package/dist/schema/capture-job.mjs +56 -0
  34. package/dist/schema/capture-job.mjs.map +1 -0
  35. package/dist/schema/capture-shard.d.mts +255 -0
  36. package/dist/schema/capture-shard.mjs +40 -0
  37. package/dist/schema/capture-shard.mjs.map +1 -0
  38. package/dist/schema/comment.d.mts +35 -19
  39. package/dist/schema/comment.mjs +6 -5
  40. package/dist/schema/comment.mjs.map +1 -1
  41. package/dist/schema/connection.d.mts +171 -0
  42. package/dist/schema/connection.mjs +35 -0
  43. package/dist/schema/connection.mjs.map +1 -0
  44. package/dist/schema/content-refs.d.mts +11 -13
  45. package/dist/schema/content-refs.mjs +3 -3
  46. package/dist/schema/content-refs.mjs.map +1 -1
  47. package/dist/schema/datetime.mjs +46 -0
  48. package/dist/schema/datetime.mjs.map +1 -0
  49. package/dist/schema/design.d.mts +587 -0
  50. package/dist/schema/design.mjs +73 -0
  51. package/dist/schema/design.mjs.map +1 -0
  52. package/dist/schema/insight.d.mts +631 -0
  53. package/dist/schema/insight.mjs +68 -0
  54. package/dist/schema/insight.mjs.map +1 -0
  55. package/dist/schema/label.d.mts +21 -23
  56. package/dist/schema/label.mjs +3 -3
  57. package/dist/schema/label.mjs.map +1 -1
  58. package/dist/schema/member.d.mts +10 -12
  59. package/dist/schema/member.mjs +3 -3
  60. package/dist/schema/member.mjs.map +1 -1
  61. package/dist/schema/notification.d.mts +63 -29
  62. package/dist/schema/notification.mjs +8 -3
  63. package/dist/schema/notification.mjs.map +1 -1
  64. package/dist/schema/project-group-mapping.d.mts +9 -11
  65. package/dist/schema/project-group-mapping.mjs +3 -3
  66. package/dist/schema/project-group-mapping.mjs.map +1 -1
  67. package/dist/schema/project.d.mts +149 -25
  68. package/dist/schema/project.mjs +11 -4
  69. package/dist/schema/project.mjs.map +1 -1
  70. package/dist/schema/site-setting.d.mts +97 -0
  71. package/dist/schema/site-setting.mjs +23 -0
  72. package/dist/schema/site-setting.mjs.map +1 -0
  73. package/dist/schema/snapshot.d.mts +195 -35
  74. package/dist/schema/snapshot.mjs +17 -4
  75. package/dist/schema/snapshot.mjs.map +1 -1
  76. package/dist/schema/token.d.mts +14 -16
  77. package/dist/schema/token.mjs +3 -3
  78. package/dist/schema/token.mjs.map +1 -1
  79. package/dist/schema/usage.d.mts +265 -0
  80. package/dist/schema/usage.mjs +36 -0
  81. package/dist/schema/usage.mjs.map +1 -0
  82. package/dist/schema/user-invite.d.mts +16 -18
  83. package/dist/schema/user-invite.mjs +3 -3
  84. package/dist/schema/user-invite.mjs.map +1 -1
  85. package/dist/schema/user.d.mts +88 -16
  86. package/dist/schema/user.mjs +8 -4
  87. package/dist/schema/user.mjs.map +1 -1
  88. package/dist/schema/webhook.d.mts +14 -16
  89. package/dist/schema/webhook.mjs +3 -3
  90. package/dist/schema/webhook.mjs.map +1 -1
  91. package/dist/schema.d.mts +24 -5
  92. package/dist/schema.mjs +26 -6
  93. package/dist/schema.mjs.map +1 -1
  94. package/dist/tidb.d.mts +0 -2
  95. package/dist/tidb.mjs +1 -2
  96. package/package.json +7 -7
  97. package/dist/schema/status-config.mjs +0 -26
  98. package/dist/schema/status-config.mjs.map +0 -1
package/dist/ddl.mjs CHANGED
@@ -1,67 +1,68 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
- //#region src/ddl.ts
4
+ // src/ddl.ts
5
5
  /** Canonical MySQL DDL for all StoryShelf tables and indexes. */
6
6
  const DDL = `
7
7
  CREATE TABLE IF NOT EXISTS projects (
8
- id TEXT PRIMARY KEY,
8
+ id VARCHAR(64) PRIMARY KEY,
9
9
  name TEXT NOT NULL,
10
- slug TEXT NOT NULL UNIQUE,
10
+ slug VARCHAR(255) NOT NULL UNIQUE,
11
11
  git_repository TEXT,
12
- git_default_branch TEXT NOT NULL DEFAULT 'main',
12
+ git_default_branch VARCHAR(255) NOT NULL DEFAULT 'main',
13
13
  pixel_threshold DOUBLE NOT NULL DEFAULT 0.1,
14
14
  max_diff_ratio DOUBLE NOT NULL DEFAULT 0.01,
15
15
  public_branch_regex TEXT,
16
16
  storybook_meta TEXT,
17
17
  execute_play TINYINT(1) NOT NULL DEFAULT false,
18
18
  play_timeout_ms INTEGER NOT NULL DEFAULT 10000,
19
- run_a11y TINYINT(1) NOT NULL DEFAULT false,
20
- browser TEXT NOT NULL DEFAULT 'chromium',
19
+ run_a11y TINYINT(1) NOT NULL DEFAULT true,
20
+ run_tests TINYINT(1) NOT NULL DEFAULT false,
21
+ browser VARCHAR(64) NOT NULL DEFAULT 'chromium',
21
22
  viewports TEXT,
23
+ browsers TEXT,
24
+ modes_allowlist TEXT,
22
25
  automigrate TINYINT(1) NOT NULL DEFAULT false,
23
- created_at DATETIME(3) NOT NULL,
24
- updated_at DATETIME(3) NOT NULL
25
- );
26
- CREATE TABLE IF NOT EXISTS project_status_configs (
27
- id TEXT PRIMARY KEY,
28
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
29
- provider TEXT NOT NULL,
30
- config TEXT NOT NULL,
31
- token_encrypted TEXT NOT NULL,
26
+ ai_profile TEXT,
27
+ review_enabled TINYINT(1) NOT NULL DEFAULT true,
28
+ review_approvals INT NOT NULL DEFAULT 1,
29
+ storybook_url_ttl_seconds INT,
32
30
  created_at DATETIME(3) NOT NULL,
33
31
  updated_at DATETIME(3) NOT NULL
34
32
  );
35
33
  CREATE TABLE IF NOT EXISTS builds (
36
- id TEXT PRIMARY KEY,
37
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
38
- git_sha TEXT NOT NULL,
39
- git_branch TEXT NOT NULL,
34
+ id VARCHAR(64) PRIMARY KEY,
35
+ project_id VARCHAR(64) NOT NULL,
36
+ git_sha VARCHAR(64) NOT NULL,
37
+ git_branch VARCHAR(255) NOT NULL,
40
38
  is_default TINYINT(1) NOT NULL DEFAULT false,
41
39
  author_email TEXT,
42
40
  author_name TEXT,
43
41
  message TEXT,
44
42
  public TINYINT(1) NOT NULL DEFAULT false,
45
- status TEXT NOT NULL DEFAULT 'pending',
43
+ status VARCHAR(32) NOT NULL DEFAULT 'pending',
46
44
  snapshot_count INTEGER NOT NULL DEFAULT 0,
47
45
  changed_count INTEGER NOT NULL DEFAULT 0,
48
46
  approved_count INTEGER NOT NULL DEFAULT 0,
49
47
  rejected_count INTEGER NOT NULL DEFAULT 0,
48
+ inherited_count INTEGER NOT NULL DEFAULT 0,
50
49
  affected_only TINYINT(1) NOT NULL DEFAULT true,
51
50
  baseline_sha TEXT,
52
51
  changed_files TEXT,
53
52
  affected_import_paths TEXT,
53
+ test_results TEXT,
54
54
  created_at DATETIME(3) NOT NULL,
55
- updated_at DATETIME(3) NOT NULL
55
+ updated_at DATETIME(3) NOT NULL,
56
+ CONSTRAINT fk_builds_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
56
57
  );
57
- CREATE INDEX IF NOT EXISTS builds_project_gitsha_idx ON builds (project_id, git_sha);
58
- CREATE INDEX IF NOT EXISTS builds_git_branch_idx ON builds (git_branch);
58
+ CREATE INDEX builds_project_gitsha_idx ON builds (project_id, git_sha);
59
+ CREATE INDEX builds_git_branch_idx ON builds (git_branch);
59
60
  CREATE TABLE IF NOT EXISTS capture_attempts (
60
- id TEXT PRIMARY KEY,
61
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
62
- build_id TEXT NOT NULL REFERENCES builds(id) ON DELETE CASCADE,
61
+ id VARCHAR(64) PRIMARY KEY,
62
+ project_id VARCHAR(64) NOT NULL,
63
+ build_id VARCHAR(64) NOT NULL,
63
64
  attempt_no INTEGER NOT NULL,
64
- status TEXT NOT NULL DEFAULT 'queued',
65
+ status VARCHAR(32) NOT NULL DEFAULT 'queued',
65
66
  error TEXT,
66
67
  req_id TEXT,
67
68
  story_count INTEGER NOT NULL DEFAULT 0,
@@ -70,31 +71,102 @@ CREATE TABLE IF NOT EXISTS capture_attempts (
70
71
  started_at DATETIME(3),
71
72
  finished_at DATETIME(3),
72
73
  created_at DATETIME(3) NOT NULL,
74
+ updated_at DATETIME(3) NOT NULL,
75
+ CONSTRAINT fk_capture_attempts_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
76
+ CONSTRAINT fk_capture_attempts_build_id FOREIGN KEY (build_id) REFERENCES builds(id) ON DELETE CASCADE
77
+ );
78
+ CREATE UNIQUE INDEX capture_attempts_build_no_idx ON capture_attempts (build_id, attempt_no);
79
+ CREATE INDEX capture_attempts_build_id_idx ON capture_attempts (build_id);
80
+ CREATE TABLE IF NOT EXISTS capture_shards (
81
+ id VARCHAR(64) PRIMARY KEY,
82
+ project_id VARCHAR(64) NOT NULL,
83
+ build_id VARCHAR(64) NOT NULL,
84
+ kind VARCHAR(32) NOT NULL,
85
+ ordinal INTEGER NOT NULL,
86
+ status VARCHAR(32) NOT NULL DEFAULT 'pending',
87
+ attempt_id VARCHAR(64),
88
+ payload TEXT,
89
+ result TEXT,
90
+ error TEXT,
91
+ started_at DATETIME(3),
92
+ finished_at DATETIME(3),
93
+ created_at DATETIME(3) NOT NULL,
94
+ updated_at DATETIME(3) NOT NULL,
95
+ CONSTRAINT fk_capture_shards_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
96
+ CONSTRAINT fk_capture_shards_build_id FOREIGN KEY (build_id) REFERENCES builds(id) ON DELETE CASCADE
97
+ );
98
+ CREATE UNIQUE INDEX capture_shards_build_kind_ordinal_idx ON capture_shards (build_id, kind, ordinal);
99
+ CREATE INDEX capture_shards_build_id_idx ON capture_shards (build_id);
100
+ CREATE TABLE IF NOT EXISTS capture_jobs (
101
+ id VARCHAR(64) PRIMARY KEY,
102
+ entry VARCHAR(64) NOT NULL,
103
+ job_id VARCHAR(64) NOT NULL,
104
+ kind VARCHAR(32) NOT NULL,
105
+ build_id VARCHAR(64),
106
+ shard_id VARCHAR(64),
107
+ attempt INTEGER NOT NULL DEFAULT 0,
108
+ max_attempts INTEGER NOT NULL DEFAULT 3,
109
+ status VARCHAR(32) NOT NULL,
110
+ visible_at DATETIME(3),
111
+ owner TEXT,
112
+ payload TEXT,
113
+ cancel_requested_at DATETIME(3),
114
+ error TEXT,
115
+ started_at DATETIME(3),
116
+ finished_at DATETIME(3),
117
+ created_at DATETIME(3) NOT NULL,
73
118
  updated_at DATETIME(3) NOT NULL
74
119
  );
75
- CREATE UNIQUE INDEX IF NOT EXISTS capture_attempts_build_no_idx ON capture_attempts (build_id, attempt_no);
76
- CREATE INDEX IF NOT EXISTS capture_attempts_build_id_idx ON capture_attempts (build_id);
120
+ CREATE INDEX capture_jobs_poll_idx ON capture_jobs (kind, visible_at, status);
121
+ CREATE INDEX capture_jobs_job_id_idx ON capture_jobs (job_id);
122
+ CREATE INDEX capture_jobs_build_id_idx ON capture_jobs (build_id);
123
+ CREATE INDEX capture_jobs_entry_created_idx ON capture_jobs (entry, created_at);
124
+ CREATE TABLE IF NOT EXISTS site_settings (
125
+ id VARCHAR(64) PRIMARY KEY,
126
+ value TEXT NOT NULL,
127
+ updated_by TEXT,
128
+ created_at DATETIME(3) NOT NULL,
129
+ updated_at DATETIME(3) NOT NULL
130
+ );
131
+ CREATE TABLE IF NOT EXISTS build_components (
132
+ id VARCHAR(64) PRIMARY KEY,
133
+ project_id VARCHAR(64) NOT NULL,
134
+ build_id VARCHAR(64) NOT NULL,
135
+ import_path VARCHAR(512) NOT NULL,
136
+ title TEXT NOT NULL,
137
+ story_count INTEGER NOT NULL DEFAULT 0,
138
+ hash TEXT NOT NULL,
139
+ created_at DATETIME(3) NOT NULL,
140
+ CONSTRAINT fk_build_components_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
141
+ CONSTRAINT fk_build_components_build_id FOREIGN KEY (build_id) REFERENCES builds(id) ON DELETE CASCADE
142
+ );
143
+ CREATE INDEX build_components_build_id_idx ON build_components (build_id);
144
+ CREATE INDEX build_components_project_import_path_idx ON build_components (project_id, import_path);
77
145
  CREATE TABLE IF NOT EXISTS capture_logs (
78
- id TEXT PRIMARY KEY,
79
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
80
- build_id TEXT NOT NULL REFERENCES builds(id) ON DELETE CASCADE,
81
- attempt_id TEXT NOT NULL REFERENCES capture_attempts(id) ON DELETE CASCADE,
146
+ id VARCHAR(64) PRIMARY KEY,
147
+ project_id VARCHAR(64) NOT NULL,
148
+ build_id VARCHAR(64) NOT NULL,
149
+ attempt_id VARCHAR(64) NOT NULL,
82
150
  seq INTEGER NOT NULL,
83
- level TEXT NOT NULL DEFAULT 'info',
151
+ level VARCHAR(16) NOT NULL DEFAULT 'info',
84
152
  message TEXT NOT NULL,
85
153
  fields TEXT,
86
- created_at DATETIME(3) NOT NULL
154
+ created_at DATETIME(3) NOT NULL,
155
+ CONSTRAINT fk_capture_logs_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
156
+ CONSTRAINT fk_capture_logs_build_id FOREIGN KEY (build_id) REFERENCES builds(id) ON DELETE CASCADE,
157
+ CONSTRAINT fk_capture_logs_attempt_id FOREIGN KEY (attempt_id) REFERENCES capture_attempts(id) ON DELETE CASCADE
87
158
  );
88
- CREATE INDEX IF NOT EXISTS capture_logs_attempt_seq_idx ON capture_logs (attempt_id, seq);
159
+ CREATE INDEX capture_logs_attempt_seq_idx ON capture_logs (attempt_id, seq);
89
160
  CREATE TABLE IF NOT EXISTS snapshots (
90
- id TEXT PRIMARY KEY,
91
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
92
- build_id TEXT NOT NULL REFERENCES builds(id) ON DELETE CASCADE,
93
- story_id TEXT NOT NULL,
161
+ id VARCHAR(64) PRIMARY KEY,
162
+ project_id VARCHAR(64) NOT NULL,
163
+ build_id VARCHAR(64) NOT NULL,
164
+ story_id VARCHAR(255) NOT NULL,
94
165
  story_name TEXT NOT NULL,
95
166
  story_title TEXT NOT NULL,
96
- story_import_path TEXT,
97
- viewport_name TEXT NOT NULL DEFAULT 'desktop',
167
+ story_import_path VARCHAR(512),
168
+ design_url TEXT,
169
+ viewport_name VARCHAR(64) NOT NULL DEFAULT 'desktop',
98
170
  viewport_width INTEGER NOT NULL DEFAULT 1280,
99
171
  viewport_height INTEGER NOT NULL DEFAULT 720,
100
172
  screenshot_path TEXT NOT NULL,
@@ -102,168 +174,344 @@ CREATE TABLE IF NOT EXISTS snapshots (
102
174
  diff_pixels INTEGER,
103
175
  diff_ratio DOUBLE,
104
176
  diff_passed TINYINT(1),
105
- status TEXT NOT NULL DEFAULT 'pending',
177
+ status VARCHAR(32) NOT NULL DEFAULT 'pending',
106
178
  reviewed_by TEXT,
107
179
  reviewed_at DATETIME(3),
108
180
  infra_hash TEXT,
181
+ env_change TEXT,
109
182
  inherited TINYINT(1) NOT NULL DEFAULT false,
110
- baseline_id TEXT,
183
+ baseline_id VARCHAR(64),
111
184
  baseline_version TEXT,
185
+ source_build_id TEXT,
186
+ comparison_image_path TEXT,
187
+ comparison_metadata TEXT,
188
+ mode VARCHAR(64),
189
+ browser VARCHAR(64) NOT NULL DEFAULT 'chromium',
190
+ duration_ms INT,
191
+ a11y_violations TEXT,
112
192
  created_at DATETIME(3) NOT NULL,
113
- updated_at DATETIME(3) NOT NULL
193
+ updated_at DATETIME(3) NOT NULL,
194
+ CONSTRAINT fk_snapshots_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
195
+ CONSTRAINT fk_snapshots_build_id FOREIGN KEY (build_id) REFERENCES builds(id) ON DELETE CASCADE
114
196
  );
115
- CREATE UNIQUE INDEX IF NOT EXISTS snapshots_build_story_viewport_idx ON snapshots (build_id, story_id, viewport_name);
116
- CREATE INDEX IF NOT EXISTS snapshots_build_id_idx ON snapshots (build_id);
197
+ CREATE INDEX snapshots_build_id_idx ON snapshots (build_id);
198
+ CREATE INDEX snapshots_project_import_path_idx ON snapshots (project_id, story_import_path);
117
199
  CREATE TABLE IF NOT EXISTS baselines (
118
- id TEXT PRIMARY KEY,
119
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
120
- story_id TEXT NOT NULL,
121
- viewport_name TEXT NOT NULL DEFAULT 'desktop',
122
- branch TEXT NOT NULL,
123
- snapshot_id TEXT,
200
+ id VARCHAR(64) PRIMARY KEY,
201
+ project_id VARCHAR(64) NOT NULL,
202
+ story_id VARCHAR(255) NOT NULL,
203
+ viewport_name VARCHAR(64) NOT NULL DEFAULT 'desktop',
204
+ branch VARCHAR(255) NOT NULL,
205
+ snapshot_id VARCHAR(64),
206
+ source_build_id TEXT,
124
207
  screenshot_path TEXT NOT NULL,
125
208
  infra_hash TEXT,
209
+ fingerprint TEXT,
210
+ mode VARCHAR(64),
211
+ browser VARCHAR(64) NOT NULL DEFAULT 'chromium',
126
212
  created_at DATETIME(3) NOT NULL,
127
- updated_at DATETIME(3) NOT NULL
213
+ updated_at DATETIME(3) NOT NULL,
214
+ CONSTRAINT fk_baselines_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
128
215
  );
129
- CREATE UNIQUE INDEX IF NOT EXISTS baselines_project_story_viewport_branch_idx ON baselines (project_id, story_id, viewport_name, branch);
130
- CREATE INDEX IF NOT EXISTS baselines_project_story_idx ON baselines (project_id, story_id);
216
+ CREATE INDEX baselines_project_story_idx ON baselines (project_id, story_id);
131
217
  CREATE TABLE IF NOT EXISTS users (
132
- id TEXT PRIMARY KEY,
133
- email TEXT NOT NULL UNIQUE,
218
+ id VARCHAR(64) PRIMARY KEY,
219
+ email VARCHAR(255) NOT NULL UNIQUE,
134
220
  name TEXT NOT NULL,
135
221
  avatar_url TEXT,
136
- role TEXT NOT NULL DEFAULT 'member',
222
+ role VARCHAR(32) NOT NULL DEFAULT 'member',
137
223
  last_login_at DATETIME(3),
138
- created_at DATETIME(3) NOT NULL
224
+ created_at DATETIME(3) NOT NULL,
225
+ password_hash TEXT,
226
+ display_name_override TEXT,
227
+ auth_provider VARCHAR(32) NOT NULL DEFAULT 'oidc',
228
+ disabled TINYINT(1) NOT NULL DEFAULT 0
139
229
  );
230
+ CREATE TABLE IF NOT EXISTS user_connections (
231
+ id VARCHAR(64) PRIMARY KEY,
232
+ user_id VARCHAR(64) NOT NULL,
233
+ service VARCHAR(64) NOT NULL,
234
+ token_encrypted TEXT NOT NULL,
235
+ refresh_token_encrypted TEXT,
236
+ expires_at DATETIME(3),
237
+ status VARCHAR(32) NOT NULL DEFAULT 'ok',
238
+ created_at DATETIME(3) NOT NULL,
239
+ updated_at DATETIME(3) NOT NULL,
240
+ CONSTRAINT fk_user_connections_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
241
+ );
242
+ CREATE UNIQUE INDEX user_connections_user_service_idx ON user_connections (user_id, service);
140
243
  CREATE TABLE IF NOT EXISTS comments (
141
- id TEXT PRIMARY KEY,
142
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
143
- build_id TEXT NOT NULL REFERENCES builds(id) ON DELETE CASCADE,
144
- snapshot_id TEXT REFERENCES snapshots(id) ON DELETE CASCADE,
145
- user_id TEXT REFERENCES users(id) ON DELETE CASCADE,
244
+ id VARCHAR(64) PRIMARY KEY,
245
+ project_id VARCHAR(64) NOT NULL,
246
+ build_id VARCHAR(64) NOT NULL,
247
+ snapshot_id VARCHAR(64),
248
+ user_id VARCHAR(64),
146
249
  body TEXT NOT NULL,
147
250
  parent_id TEXT,
148
251
  resolved TINYINT(1) NOT NULL DEFAULT false,
149
252
  created_at DATETIME(3) NOT NULL,
150
- updated_at DATETIME(3) NOT NULL
253
+ updated_at DATETIME(3) NOT NULL,
254
+ story_id TEXT,
255
+ CONSTRAINT fk_comments_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
256
+ CONSTRAINT fk_comments_build_id FOREIGN KEY (build_id) REFERENCES builds(id) ON DELETE CASCADE,
257
+ CONSTRAINT fk_comments_snapshot_id FOREIGN KEY (snapshot_id) REFERENCES snapshots(id) ON DELETE CASCADE,
258
+ CONSTRAINT fk_comments_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
151
259
  );
152
- CREATE INDEX IF NOT EXISTS comments_build_id_idx ON comments (build_id);
260
+ CREATE INDEX comments_build_id_idx ON comments (build_id);
261
+ CREATE TABLE IF NOT EXISTS build_reviews (
262
+ id VARCHAR(64) PRIMARY KEY,
263
+ build_id VARCHAR(64) NOT NULL,
264
+ user_id VARCHAR(64),
265
+ verdict TEXT NOT NULL,
266
+ body TEXT,
267
+ created_at DATETIME(3) NOT NULL,
268
+ CONSTRAINT fk_build_reviews_build_id FOREIGN KEY (build_id) REFERENCES builds(id) ON DELETE CASCADE,
269
+ CONSTRAINT fk_build_reviews_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
270
+ );
271
+ CREATE INDEX build_reviews_build_id_idx ON build_reviews (build_id);
153
272
  CREATE TABLE IF NOT EXISTS label_types (
154
- id TEXT PRIMARY KEY,
155
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
156
- key TEXT NOT NULL,
273
+ id VARCHAR(64) PRIMARY KEY,
274
+ project_id VARCHAR(64) NOT NULL,
275
+ \`key\` VARCHAR(255) NOT NULL,
157
276
  name TEXT NOT NULL,
158
277
  link_template TEXT,
159
278
  color TEXT,
160
- created_at DATETIME(3) NOT NULL
279
+ created_at DATETIME(3) NOT NULL,
280
+ CONSTRAINT fk_label_types_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
161
281
  );
162
- CREATE UNIQUE INDEX IF NOT EXISTS label_types_project_key_idx ON label_types (project_id, key);
282
+ CREATE UNIQUE INDEX label_types_project_key_idx ON label_types (project_id, \`key\`);
163
283
  CREATE TABLE IF NOT EXISTS build_labels (
164
- id TEXT PRIMARY KEY,
165
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
166
- build_id TEXT NOT NULL REFERENCES builds(id) ON DELETE CASCADE,
167
- type_key TEXT NOT NULL,
168
- value TEXT NOT NULL,
169
- created_at DATETIME(3) NOT NULL
284
+ id VARCHAR(64) PRIMARY KEY,
285
+ project_id VARCHAR(64) NOT NULL,
286
+ build_id VARCHAR(64) NOT NULL,
287
+ type_key VARCHAR(64) NOT NULL,
288
+ value VARCHAR(255) NOT NULL,
289
+ created_at DATETIME(3) NOT NULL,
290
+ CONSTRAINT fk_build_labels_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
291
+ CONSTRAINT fk_build_labels_build_id FOREIGN KEY (build_id) REFERENCES builds(id) ON DELETE CASCADE
292
+ );
293
+ CREATE UNIQUE INDEX build_labels_build_type_value_idx ON build_labels (build_id, type_key, value);
294
+ CREATE TABLE IF NOT EXISTS project_links (
295
+ id VARCHAR(64) PRIMARY KEY,
296
+ downstream_id VARCHAR(64) NOT NULL,
297
+ upstream_id VARCHAR(64) NOT NULL,
298
+ package_name VARCHAR(255) NOT NULL,
299
+ created_at DATETIME(3) NOT NULL,
300
+ CONSTRAINT fk_project_links_downstream_id FOREIGN KEY (downstream_id) REFERENCES projects(id) ON DELETE CASCADE,
301
+ CONSTRAINT fk_project_links_upstream_id FOREIGN KEY (upstream_id) REFERENCES projects(id) ON DELETE CASCADE
170
302
  );
171
- CREATE UNIQUE INDEX IF NOT EXISTS build_labels_build_type_value_idx ON build_labels (build_id, type_key, value);
303
+ CREATE UNIQUE INDEX project_links_downstream_package_idx ON project_links (downstream_id, package_name);
304
+ CREATE TABLE IF NOT EXISTS design_links (
305
+ id VARCHAR(64) PRIMARY KEY,
306
+ project_id VARCHAR(64) NOT NULL,
307
+ import_path VARCHAR(512),
308
+ label TEXT,
309
+ url TEXT NOT NULL,
310
+ created_at DATETIME(3) NOT NULL,
311
+ updated_at DATETIME(3) NOT NULL,
312
+ CONSTRAINT fk_design_links_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
313
+ );
314
+ CREATE INDEX design_links_project_id_idx ON design_links (project_id);
315
+ CREATE TABLE IF NOT EXISTS design_credentials (
316
+ id VARCHAR(64) PRIMARY KEY,
317
+ project_id VARCHAR(64) NOT NULL,
318
+ provider VARCHAR(64) NOT NULL,
319
+ token_encrypted TEXT NOT NULL,
320
+ status VARCHAR(32) NOT NULL DEFAULT 'unknown',
321
+ checked_at DATETIME(3),
322
+ created_at DATETIME(3) NOT NULL,
323
+ updated_at DATETIME(3) NOT NULL,
324
+ CONSTRAINT fk_design_credentials_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
325
+ );
326
+ CREATE UNIQUE INDEX design_credentials_project_provider_idx ON design_credentials (project_id, provider);
327
+ CREATE TABLE IF NOT EXISTS design_nodes (
328
+ id VARCHAR(64) PRIMARY KEY,
329
+ project_id VARCHAR(64) NOT NULL,
330
+ provider VARCHAR(64) NOT NULL,
331
+ viewer_id VARCHAR(128) NOT NULL DEFAULT '',
332
+ file_key VARCHAR(128) NOT NULL,
333
+ node_id VARCHAR(128) NOT NULL DEFAULT '',
334
+ name TEXT,
335
+ version TEXT,
336
+ last_modified TEXT,
337
+ state VARCHAR(32) NOT NULL DEFAULT 'ok',
338
+ render_path TEXT,
339
+ render_version TEXT,
340
+ fetched_at DATETIME(3) NOT NULL,
341
+ created_at DATETIME(3) NOT NULL,
342
+ updated_at DATETIME(3) NOT NULL,
343
+ CONSTRAINT fk_design_nodes_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
344
+ );
345
+ CREATE UNIQUE INDEX design_nodes_project_file_node_idx ON design_nodes (project_id, provider, viewer_id, file_key, node_id);
346
+ CREATE TABLE IF NOT EXISTS build_package_usage (
347
+ id VARCHAR(64) PRIMARY KEY,
348
+ project_id VARCHAR(64) NOT NULL,
349
+ build_id VARCHAR(64) NOT NULL,
350
+ story_import_path TEXT NOT NULL,
351
+ package_name TEXT NOT NULL,
352
+ module_path TEXT NOT NULL,
353
+ version TEXT,
354
+ created_at DATETIME(3) NOT NULL,
355
+ CONSTRAINT fk_build_package_usage_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
356
+ CONSTRAINT fk_build_package_usage_build_id FOREIGN KEY (build_id) REFERENCES builds(id) ON DELETE CASCADE
357
+ );
358
+ CREATE INDEX build_package_usage_build_id_idx ON build_package_usage (build_id);
172
359
  CREATE TABLE IF NOT EXISTS tokens (
173
- id TEXT PRIMARY KEY,
174
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
360
+ id VARCHAR(64) PRIMARY KEY,
361
+ project_id VARCHAR(64) NOT NULL,
175
362
  name TEXT NOT NULL,
176
- hash TEXT NOT NULL UNIQUE,
177
- user_id TEXT REFERENCES users(id) ON DELETE CASCADE,
363
+ hash VARCHAR(128) NOT NULL UNIQUE,
364
+ user_id VARCHAR(64),
178
365
  last_used_at DATETIME(3),
179
- created_at DATETIME(3) NOT NULL
366
+ created_at DATETIME(3) NOT NULL,
367
+ CONSTRAINT fk_tokens_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
368
+ CONSTRAINT fk_tokens_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
180
369
  );
181
370
  CREATE TABLE IF NOT EXISTS webhooks (
182
- id TEXT PRIMARY KEY,
183
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
371
+ id VARCHAR(64) PRIMARY KEY,
372
+ project_id VARCHAR(64) NOT NULL,
184
373
  url TEXT NOT NULL,
185
374
  secret_encrypted TEXT NOT NULL,
186
375
  events TEXT,
187
376
  created_at DATETIME(3) NOT NULL,
188
- updated_at DATETIME(3) NOT NULL
377
+ updated_at DATETIME(3) NOT NULL,
378
+ CONSTRAINT fk_webhooks_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
189
379
  );
190
380
  CREATE TABLE IF NOT EXISTS notification_channels (
191
- id TEXT PRIMARY KEY,
192
- project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
381
+ id VARCHAR(64) PRIMARY KEY,
382
+ project_id VARCHAR(64),
193
383
  provider TEXT NOT NULL,
194
384
  config TEXT NOT NULL,
195
385
  secret_encrypted TEXT,
196
386
  events TEXT,
197
387
  enabled BOOLEAN NOT NULL DEFAULT TRUE,
388
+ last_error TEXT,
389
+ last_error_at DATETIME(3),
198
390
  created_at DATETIME(3) NOT NULL,
199
- updated_at DATETIME(3) NOT NULL
391
+ updated_at DATETIME(3) NOT NULL,
392
+ CONSTRAINT fk_notification_channels_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
200
393
  );
201
394
  CREATE INDEX notification_channels_project_id_idx ON notification_channels (project_id);
202
395
  CREATE TABLE IF NOT EXISTS notification_subscriptions (
203
- id TEXT PRIMARY KEY,
204
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
205
- user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
396
+ id VARCHAR(64) PRIMARY KEY,
397
+ project_id VARCHAR(64) NOT NULL,
398
+ user_id VARCHAR(64) NOT NULL,
206
399
  events TEXT,
207
400
  via TEXT,
208
401
  enabled BOOLEAN NOT NULL DEFAULT TRUE,
209
- created_at DATETIME(3) NOT NULL
402
+ created_at DATETIME(3) NOT NULL,
403
+ CONSTRAINT fk_notification_subscriptions_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
404
+ CONSTRAINT fk_notification_subscriptions_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
210
405
  );
211
406
  CREATE UNIQUE INDEX notification_subscriptions_project_user_idx ON notification_subscriptions (project_id, user_id);
407
+ CREATE TABLE IF NOT EXISTS insights (
408
+ id VARCHAR(64) PRIMARY KEY,
409
+ project_id VARCHAR(64) NOT NULL,
410
+ build_id VARCHAR(64),
411
+ kind VARCHAR(32) NOT NULL,
412
+ window_key VARCHAR(64),
413
+ input_hash VARCHAR(64) NOT NULL,
414
+ status VARCHAR(32) NOT NULL,
415
+ profile TEXT NOT NULL,
416
+ model TEXT NOT NULL,
417
+ prompt_version TEXT NOT NULL,
418
+ verdict TEXT,
419
+ summary TEXT,
420
+ result TEXT,
421
+ error_code TEXT,
422
+ created_at DATETIME(3) NOT NULL,
423
+ started_at DATETIME(3),
424
+ finished_at DATETIME(3),
425
+ CONSTRAINT fk_insights_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
426
+ CONSTRAINT fk_insights_build_id FOREIGN KEY (build_id) REFERENCES builds(id) ON DELETE CASCADE
427
+ );
428
+ CREATE INDEX insights_project_build_idx ON insights (project_id, build_id);
429
+ CREATE INDEX insights_created_at_idx ON insights (created_at);
430
+ CREATE UNIQUE INDEX insights_triage_unique_idx ON insights (project_id, build_id, kind, input_hash);
431
+ CREATE UNIQUE INDEX insights_health_unique_idx ON insights (project_id, kind, window_key);
432
+ CREATE TABLE IF NOT EXISTS ai_usage (
433
+ id VARCHAR(64) PRIMARY KEY,
434
+ insight_id TEXT,
435
+ project_id VARCHAR(64) NOT NULL,
436
+ profile TEXT NOT NULL,
437
+ task TEXT NOT NULL,
438
+ model TEXT NOT NULL,
439
+ input_tokens INTEGER NOT NULL DEFAULT 0,
440
+ output_tokens INTEGER NOT NULL DEFAULT 0,
441
+ estimated TINYINT(1) NOT NULL DEFAULT false,
442
+ images INTEGER NOT NULL DEFAULT 0,
443
+ status VARCHAR(32) NOT NULL,
444
+ created_at DATETIME(3) NOT NULL,
445
+ CONSTRAINT fk_ai_usage_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
446
+ );
447
+ CREATE INDEX ai_usage_created_at_idx ON ai_usage (created_at);
448
+ CREATE INDEX ai_usage_project_created_idx ON ai_usage (project_id, created_at);
449
+ CREATE TABLE IF NOT EXISTS ai_budget_alerts (
450
+ id VARCHAR(64) PRIMARY KEY,
451
+ day TEXT NOT NULL,
452
+ threshold INTEGER NOT NULL,
453
+ created_at DATETIME(3) NOT NULL
454
+ );
212
455
  CREATE TABLE IF NOT EXISTS user_invite_tokens (
213
- id TEXT PRIMARY KEY,
214
- user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
215
- token_hash TEXT NOT NULL UNIQUE,
456
+ id VARCHAR(64) PRIMARY KEY,
457
+ user_id VARCHAR(64) NOT NULL,
458
+ token_hash VARCHAR(128) NOT NULL UNIQUE,
216
459
  expires_at DATETIME(3) NOT NULL,
217
460
  used_at DATETIME(3),
218
- created_at DATETIME(3) NOT NULL
461
+ created_at DATETIME(3) NOT NULL,
462
+ CONSTRAINT fk_user_invite_tokens_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
219
463
  );
220
464
  CREATE TABLE IF NOT EXISTS project_members (
221
- id TEXT PRIMARY KEY,
222
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
223
- user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
224
- role TEXT NOT NULL DEFAULT 'viewer',
225
- source TEXT NOT NULL DEFAULT 'manual',
226
- created_at DATETIME(3) NOT NULL
465
+ id VARCHAR(64) PRIMARY KEY,
466
+ project_id VARCHAR(64) NOT NULL,
467
+ user_id VARCHAR(64) NOT NULL,
468
+ role VARCHAR(32) NOT NULL DEFAULT 'viewer',
469
+ source VARCHAR(32) NOT NULL DEFAULT 'manual',
470
+ created_at DATETIME(3) NOT NULL,
471
+ CONSTRAINT fk_project_members_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
472
+ CONSTRAINT fk_project_members_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
227
473
  );
228
- CREATE UNIQUE INDEX IF NOT EXISTS project_members_project_user_idx ON project_members (project_id, user_id);
474
+ CREATE UNIQUE INDEX project_members_project_user_idx ON project_members (project_id, user_id);
229
475
  CREATE TABLE IF NOT EXISTS project_group_mappings (
230
- id TEXT PRIMARY KEY,
231
- project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
232
- group_name TEXT NOT NULL,
233
- role TEXT NOT NULL DEFAULT 'viewer',
234
- created_at DATETIME(3) NOT NULL
476
+ id VARCHAR(64) PRIMARY KEY,
477
+ project_id VARCHAR(64) NOT NULL,
478
+ group_name VARCHAR(255) NOT NULL,
479
+ role VARCHAR(32) NOT NULL DEFAULT 'viewer',
480
+ created_at DATETIME(3) NOT NULL,
481
+ CONSTRAINT fk_project_group_mappings_project_id FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
235
482
  );
236
- CREATE UNIQUE INDEX IF NOT EXISTS project_group_mappings_project_group_idx ON project_group_mappings (project_id, group_name);
483
+ CREATE UNIQUE INDEX project_group_mappings_project_group_idx ON project_group_mappings (project_id, group_name);
237
484
  CREATE TABLE IF NOT EXISTS content_refs (
238
- hash TEXT PRIMARY KEY,
485
+ hash VARCHAR(128) PRIMARY KEY,
239
486
  ref_count INTEGER NOT NULL DEFAULT 1,
240
487
  last_seen_at DATETIME(3) NOT NULL,
241
488
  created_at DATETIME(3) NOT NULL
242
489
  );
243
- CREATE TABLE IF NOT EXISTS "user" (
244
- id TEXT PRIMARY KEY,
490
+ CREATE TABLE IF NOT EXISTS \`user\` (
491
+ id VARCHAR(64) PRIMARY KEY,
245
492
  name TEXT NOT NULL,
246
- email TEXT NOT NULL UNIQUE,
493
+ email VARCHAR(255) NOT NULL UNIQUE,
247
494
  email_verified TINYINT(1) NOT NULL DEFAULT false,
248
495
  image TEXT,
249
496
  created_at DATETIME(3) NOT NULL,
250
497
  updated_at DATETIME(3) NOT NULL
251
498
  );
252
499
  CREATE TABLE IF NOT EXISTS session (
253
- id TEXT PRIMARY KEY,
254
- user_id TEXT NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
255
- token TEXT NOT NULL UNIQUE,
500
+ id VARCHAR(64) PRIMARY KEY,
501
+ user_id VARCHAR(64) NOT NULL,
502
+ token VARCHAR(512) NOT NULL UNIQUE,
256
503
  expires_at DATETIME(3) NOT NULL,
257
504
  ip_address TEXT,
258
505
  user_agent TEXT,
259
506
  created_at DATETIME(3) NOT NULL,
260
- updated_at DATETIME(3) NOT NULL
507
+ updated_at DATETIME(3) NOT NULL,
508
+ CONSTRAINT fk_session_user_id FOREIGN KEY (user_id) REFERENCES \`user\`(id) ON DELETE CASCADE
261
509
  );
262
- CREATE INDEX IF NOT EXISTS session_token_idx ON session (token);
263
- CREATE INDEX IF NOT EXISTS session_user_id_idx ON session (user_id);
510
+ CREATE INDEX session_token_idx ON session (token);
511
+ CREATE INDEX session_user_id_idx ON session (user_id);
264
512
  CREATE TABLE IF NOT EXISTS account (
265
- id TEXT PRIMARY KEY,
266
- user_id TEXT NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
513
+ id VARCHAR(64) PRIMARY KEY,
514
+ user_id VARCHAR(64) NOT NULL,
267
515
  account_id TEXT NOT NULL,
268
516
  provider_id TEXT NOT NULL,
269
517
  access_token TEXT,
@@ -275,47 +523,49 @@ CREATE TABLE IF NOT EXISTS account (
275
523
  expires_at DATETIME(3),
276
524
  password TEXT,
277
525
  created_at DATETIME(3) NOT NULL,
278
- updated_at DATETIME(3) NOT NULL
526
+ updated_at DATETIME(3) NOT NULL,
527
+ CONSTRAINT fk_account_user_id FOREIGN KEY (user_id) REFERENCES \`user\`(id) ON DELETE CASCADE
279
528
  );
280
- CREATE INDEX IF NOT EXISTS account_user_id_idx ON account (user_id);
529
+ CREATE INDEX account_user_id_idx ON account (user_id);
281
530
  CREATE TABLE IF NOT EXISTS verification (
282
- id TEXT PRIMARY KEY,
283
- identifier TEXT NOT NULL,
531
+ id VARCHAR(64) PRIMARY KEY,
532
+ identifier VARCHAR(255) NOT NULL,
284
533
  value TEXT NOT NULL,
285
534
  expires_at DATETIME(3) NOT NULL,
286
535
  created_at DATETIME(3) NOT NULL,
287
536
  updated_at DATETIME(3) NOT NULL
288
537
  );
289
- CREATE INDEX IF NOT EXISTS verification_identifier_idx ON verification (identifier);
538
+ CREATE INDEX verification_identifier_idx ON verification (identifier);
290
539
  CREATE TABLE IF NOT EXISTS passkey (
291
- id TEXT PRIMARY KEY,
540
+ id VARCHAR(64) PRIMARY KEY,
292
541
  name TEXT,
293
542
  public_key TEXT NOT NULL,
294
- user_id TEXT NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
295
- credential_id TEXT NOT NULL,
543
+ user_id VARCHAR(64) NOT NULL,
544
+ credential_id VARCHAR(255) NOT NULL,
296
545
  counter INTEGER NOT NULL,
297
546
  device_type TEXT NOT NULL,
298
547
  backed_up TINYINT(1) NOT NULL DEFAULT false,
299
548
  transports TEXT,
300
549
  aaguid TEXT,
301
550
  created_at DATETIME(3) NOT NULL,
302
- updated_at DATETIME(3)
551
+ updated_at DATETIME(3),
552
+ CONSTRAINT fk_passkey_user_id FOREIGN KEY (user_id) REFERENCES \`user\`(id) ON DELETE CASCADE
303
553
  );
304
- CREATE INDEX IF NOT EXISTS passkey_user_id_idx ON passkey (user_id);
305
- CREATE INDEX IF NOT EXISTS passkey_credential_id_idx ON passkey (credential_id);
306
- CREATE TABLE IF NOT EXISTS "ssoProvider" (
307
- id TEXT PRIMARY KEY,
554
+ CREATE INDEX passkey_user_id_idx ON passkey (user_id);
555
+ CREATE INDEX passkey_credential_id_idx ON passkey (credential_id);
556
+ CREATE TABLE IF NOT EXISTS \`ssoProvider\` (
557
+ id VARCHAR(64) PRIMARY KEY,
308
558
  issuer TEXT NOT NULL,
309
559
  oidc_config TEXT,
310
560
  saml_config TEXT,
311
- user_id TEXT NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
312
- provider_id TEXT NOT NULL UNIQUE,
561
+ user_id VARCHAR(64) NOT NULL,
562
+ provider_id VARCHAR(64) NOT NULL UNIQUE,
313
563
  organization_id TEXT,
314
- domain TEXT NOT NULL
564
+ domain VARCHAR(255) NOT NULL,
565
+ CONSTRAINT fk_ssoProvider_user_id FOREIGN KEY (user_id) REFERENCES \`user\`(id) ON DELETE CASCADE
315
566
  );
316
- CREATE INDEX IF NOT EXISTS ssoprovider_domain_idx ON "ssoProvider" (domain);
567
+ CREATE INDEX ssoprovider_domain_idx ON \`ssoProvider\` (domain);
317
568
  `;
318
- //#endregion
319
569
  export { DDL };
320
570
 
321
571
  //# sourceMappingURL=ddl.mjs.map