@allbluecn/database 0.4.4 → 0.4.6

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 (25) hide show
  1. package/migrations/20260804174501_init/migration.sql +1764 -0
  2. package/migrations/20260805174545_add_story_activity_is_ai/migration.sql +2 -0
  3. package/migrations/20260806035202_story_archived/migration.sql +6 -0
  4. package/migrations/20260806061157_builtin_independent_project/migration.sql +26 -0
  5. package/migrations/20260806144250_tanstack_ai_persistence/migration.sql +129 -0
  6. package/migrations/20260809080004_add_monitoring_observability/migration.sql +75 -0
  7. package/migrations/20260811112502_add_workspace/migration.sql +89 -0
  8. package/migrations/20260811153719_add_hosted_ai_tables/migration.sql +119 -0
  9. package/migrations/20260812043944_add_billing_tables/migration.sql +86 -0
  10. package/migrations/20260813040200_sub3_stripe_subscription_unique/migration.sql +6 -0
  11. package/migrations/20260813061345_add_enterprise_license_sso_audit_permissions/migration.sql +169 -0
  12. package/migrations/20260813132026_add_user_locale/migration.sql +2 -0
  13. package/migrations/20260814000000_add_story_composite_index/migration.sql +2 -0
  14. package/migrations/20260814161622_add_user_default_workspace_id/migration.sql +2 -0
  15. package/migrations/20260815025746_p2_seat_addon/migration.sql +15 -0
  16. package/migrations/20260815120000_creem_billing_neutralization/migration.sql +122 -0
  17. package/migrations/20260816212027_compliance_content/migration.sql +3 -0
  18. package/migrations/20260817204928_p6_user_agents_skills/migration.sql +57 -0
  19. package/migrations/20260818094327_user_level_subscription/migration.sql +43 -0
  20. package/migrations/20260819014924_team_membership_invitation/migration.sql +65 -0
  21. package/migrations/migration_lock.toml +3 -0
  22. package/package.json +8 -3
  23. package/prisma.config.ts +18 -0
  24. package/schema.prisma +2014 -0
  25. package/schema.sqlite.prisma +1584 -0
@@ -0,0 +1,1764 @@
1
+ -- CreateEnum
2
+ CREATE TYPE "Role" AS ENUM ('SUPER_ADMIN', 'ADMIN', 'USER', 'GUEST');
3
+
4
+ -- CreateEnum
5
+ CREATE TYPE "UserStatus" AS ENUM ('ACTIVE', 'INACTIVE', 'BANNED');
6
+
7
+ -- CreateEnum
8
+ CREATE TYPE "IconType" AS ENUM ('IMAGE', 'ICON');
9
+
10
+ -- CreateEnum
11
+ CREATE TYPE "MarketplaceAppStatus" AS ENUM ('DRAFT', 'PUBLISHED', 'UNPUBLISHED');
12
+
13
+ -- CreateEnum
14
+ CREATE TYPE "ReviewStatus" AS ENUM ('PENDING', 'APPROVED', 'REJECTED');
15
+
16
+ -- CreateEnum
17
+ CREATE TYPE "ShareStatus" AS ENUM ('ACTIVE', 'EXPIRED', 'DISABLED');
18
+
19
+ -- CreateEnum
20
+ CREATE TYPE "DependencyType" AS ENUM ('BLOCKS', 'BLOCKED_BY', 'RELATES_TO');
21
+
22
+ -- CreateTable
23
+ CREATE TABLE "system_settings" (
24
+ "id" TEXT NOT NULL,
25
+ "key" TEXT NOT NULL,
26
+ "value" TEXT NOT NULL,
27
+ "category" TEXT NOT NULL DEFAULT 'general',
28
+ "desc" TEXT,
29
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
30
+ "updatedAt" TIMESTAMP(3) NOT NULL,
31
+
32
+ CONSTRAINT "system_settings_pkey" PRIMARY KEY ("id")
33
+ );
34
+
35
+ -- CreateTable
36
+ CREATE TABLE "users" (
37
+ "id" TEXT NOT NULL,
38
+ "email" TEXT NOT NULL,
39
+ "username" TEXT NOT NULL,
40
+ "password" TEXT NOT NULL,
41
+ "emailVerified" TIMESTAMP(3),
42
+ "image" TEXT,
43
+ "role" "Role" NOT NULL DEFAULT 'USER',
44
+ "status" "UserStatus" NOT NULL DEFAULT 'ACTIVE',
45
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
46
+ "updatedAt" TIMESTAMP(3) NOT NULL,
47
+ "lastLoginAt" TIMESTAMP(3),
48
+ "avatarConfig" JSONB,
49
+ "bgShape" TEXT,
50
+ "bgColor" TEXT,
51
+ "aiProvider" TEXT,
52
+ "aiApiKey" TEXT,
53
+ "aiModel" TEXT,
54
+ "storyDisplayOptions" JSONB,
55
+ "sketchApiToken" TEXT,
56
+ "timezone" TEXT,
57
+
58
+ CONSTRAINT "users_pkey" PRIMARY KEY ("id")
59
+ );
60
+
61
+ -- CreateTable
62
+ CREATE TABLE "accounts" (
63
+ "id" TEXT NOT NULL,
64
+ "userId" TEXT NOT NULL,
65
+ "type" TEXT NOT NULL,
66
+ "provider" TEXT NOT NULL,
67
+ "providerAccountId" TEXT NOT NULL,
68
+ "refresh_token" TEXT,
69
+ "access_token" TEXT,
70
+ "expires_at" INTEGER,
71
+ "token_type" TEXT,
72
+ "scope" TEXT,
73
+ "id_token" TEXT,
74
+ "session_state" TEXT,
75
+
76
+ CONSTRAINT "accounts_pkey" PRIMARY KEY ("id")
77
+ );
78
+
79
+ -- CreateTable
80
+ CREATE TABLE "projects" (
81
+ "id" TEXT NOT NULL,
82
+ "displayId" TEXT,
83
+ "name" TEXT NOT NULL,
84
+ "description" TEXT,
85
+ "icon" TEXT NOT NULL DEFAULT 'folder',
86
+ "timezone" TEXT,
87
+ "ownerId" TEXT NOT NULL,
88
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
89
+ "updatedAt" TIMESTAMP(3) NOT NULL,
90
+
91
+ CONSTRAINT "projects_pkey" PRIMARY KEY ("id")
92
+ );
93
+
94
+ -- CreateTable
95
+ CREATE TABLE "project_members" (
96
+ "id" TEXT NOT NULL,
97
+ "projectId" TEXT NOT NULL,
98
+ "userId" TEXT NOT NULL,
99
+ "role" TEXT NOT NULL DEFAULT 'member',
100
+ "status" TEXT NOT NULL DEFAULT 'active',
101
+ "joinedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
102
+
103
+ CONSTRAINT "project_members_pkey" PRIMARY KEY ("id")
104
+ );
105
+
106
+ -- CreateTable
107
+ CREATE TABLE "project_activities" (
108
+ "id" TEXT NOT NULL,
109
+ "projectId" TEXT NOT NULL,
110
+ "userId" TEXT NOT NULL,
111
+ "action" TEXT NOT NULL,
112
+ "targetType" TEXT,
113
+ "targetId" TEXT,
114
+ "metadata" JSONB,
115
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
116
+
117
+ CONSTRAINT "project_activities_pkey" PRIMARY KEY ("id")
118
+ );
119
+
120
+ -- CreateTable
121
+ CREATE TABLE "conversations" (
122
+ "id" TEXT NOT NULL,
123
+ "userId" TEXT NOT NULL,
124
+ "title" TEXT NOT NULL DEFAULT '新对话',
125
+ "isArchived" BOOLEAN NOT NULL DEFAULT false,
126
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
127
+ "updatedAt" TIMESTAMP(3) NOT NULL,
128
+
129
+ CONSTRAINT "conversations_pkey" PRIMARY KEY ("id")
130
+ );
131
+
132
+ -- CreateTable
133
+ CREATE TABLE "messages" (
134
+ "id" TEXT NOT NULL,
135
+ "conversationId" TEXT NOT NULL,
136
+ "role" TEXT NOT NULL,
137
+ "content" TEXT NOT NULL,
138
+ "parts" JSONB,
139
+ "thinking" TEXT,
140
+ "citations" JSONB,
141
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
142
+
143
+ CONSTRAINT "messages_pkey" PRIMARY KEY ("id")
144
+ );
145
+
146
+ -- CreateTable
147
+ CREATE TABLE "login_logs" (
148
+ "id" TEXT NOT NULL,
149
+ "userId" TEXT NOT NULL,
150
+ "ip" TEXT,
151
+ "userAgent" TEXT,
152
+ "location" TEXT,
153
+ "success" BOOLEAN NOT NULL DEFAULT true,
154
+ "message" TEXT,
155
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
156
+
157
+ CONSTRAINT "login_logs_pkey" PRIMARY KEY ("id")
158
+ );
159
+
160
+ -- CreateTable
161
+ CREATE TABLE "invitation_codes" (
162
+ "id" TEXT NOT NULL,
163
+ "code" TEXT NOT NULL,
164
+ "maxUses" INTEGER NOT NULL DEFAULT 1,
165
+ "usedCount" INTEGER NOT NULL DEFAULT 0,
166
+ "expiresAt" TIMESTAMP(3) NOT NULL,
167
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
168
+
169
+ CONSTRAINT "invitation_codes_pkey" PRIMARY KEY ("id")
170
+ );
171
+
172
+ -- CreateTable
173
+ CREATE TABLE "invitation_uses" (
174
+ "id" TEXT NOT NULL,
175
+ "codeId" TEXT NOT NULL,
176
+ "userId" TEXT NOT NULL,
177
+ "usedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
178
+
179
+ CONSTRAINT "invitation_uses_pkey" PRIMARY KEY ("id")
180
+ );
181
+
182
+ -- CreateTable
183
+ CREATE TABLE "password_reset_tokens" (
184
+ "id" TEXT NOT NULL,
185
+ "token" TEXT NOT NULL,
186
+ "userId" TEXT NOT NULL,
187
+ "expiresAt" TIMESTAMP(3) NOT NULL,
188
+ "usedAt" TIMESTAMP(3),
189
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
190
+
191
+ CONSTRAINT "password_reset_tokens_pkey" PRIMARY KEY ("id")
192
+ );
193
+
194
+ -- CreateTable
195
+ CREATE TABLE "knowledge_bases" (
196
+ "id" TEXT NOT NULL,
197
+ "name" TEXT NOT NULL,
198
+ "description" TEXT,
199
+ "icon" TEXT NOT NULL DEFAULT 'notebook',
200
+ "tags" JSONB NOT NULL DEFAULT '[]',
201
+ "visibility" TEXT NOT NULL DEFAULT 'private',
202
+ "userId" TEXT NOT NULL,
203
+ "isDeleted" BOOLEAN NOT NULL DEFAULT false,
204
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
205
+ "updatedAt" TIMESTAMP(3) NOT NULL,
206
+
207
+ CONSTRAINT "knowledge_bases_pkey" PRIMARY KEY ("id")
208
+ );
209
+
210
+ -- CreateTable
211
+ CREATE TABLE "knowledge_documents" (
212
+ "id" TEXT NOT NULL,
213
+ "kbId" TEXT NOT NULL,
214
+ "parentId" TEXT,
215
+ "title" TEXT NOT NULL,
216
+ "type" TEXT NOT NULL DEFAULT 'doc',
217
+ "content" JSONB NOT NULL DEFAULT '{}',
218
+ "icon" TEXT,
219
+ "isHomepage" BOOLEAN NOT NULL DEFAULT false,
220
+ "sortOrder" INTEGER NOT NULL DEFAULT 0,
221
+ "isDeleted" BOOLEAN NOT NULL DEFAULT false,
222
+ "createdBy" TEXT NOT NULL,
223
+ "tags" JSONB NOT NULL DEFAULT '[]',
224
+ "properties" JSONB NOT NULL DEFAULT '{}',
225
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
226
+ "updatedAt" TIMESTAMP(3) NOT NULL,
227
+
228
+ CONSTRAINT "knowledge_documents_pkey" PRIMARY KEY ("id")
229
+ );
230
+
231
+ -- CreateTable
232
+ CREATE TABLE "prds" (
233
+ "id" TEXT NOT NULL,
234
+ "icon" TEXT NOT NULL DEFAULT 'file',
235
+ "name" TEXT NOT NULL,
236
+ "description" TEXT,
237
+ "settings" JSONB,
238
+ "userId" TEXT NOT NULL,
239
+ "isDeleted" BOOLEAN NOT NULL DEFAULT false,
240
+ "deletedAt" TIMESTAMP(3),
241
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
242
+ "updatedAt" TIMESTAMP(3) NOT NULL,
243
+
244
+ CONSTRAINT "prds_pkey" PRIMARY KEY ("id")
245
+ );
246
+
247
+ -- CreateTable
248
+ CREATE TABLE "agent_conversations" (
249
+ "id" TEXT NOT NULL,
250
+ "userId" TEXT NOT NULL,
251
+ "prdId" TEXT NOT NULL,
252
+ "title" TEXT NOT NULL DEFAULT '新会话',
253
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
254
+ "updatedAt" TIMESTAMP(3) NOT NULL,
255
+
256
+ CONSTRAINT "agent_conversations_pkey" PRIMARY KEY ("id")
257
+ );
258
+
259
+ -- CreateTable
260
+ CREATE TABLE "agent_messages" (
261
+ "id" TEXT NOT NULL,
262
+ "conversationId" TEXT NOT NULL,
263
+ "role" TEXT NOT NULL,
264
+ "content" TEXT NOT NULL,
265
+ "components" JSONB,
266
+ "isError" BOOLEAN NOT NULL DEFAULT false,
267
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
268
+
269
+ CONSTRAINT "agent_messages_pkey" PRIMARY KEY ("id")
270
+ );
271
+
272
+ -- CreateTable
273
+ CREATE TABLE "components" (
274
+ "id" TEXT NOT NULL,
275
+ "name" TEXT NOT NULL,
276
+ "description" TEXT,
277
+ "type" TEXT NOT NULL,
278
+ "category" TEXT,
279
+ "subCategory" TEXT,
280
+ "path" TEXT,
281
+ "defaultWidth" INTEGER NOT NULL DEFAULT 200,
282
+ "defaultHeight" INTEGER NOT NULL DEFAULT 40,
283
+ "prototypeKey" TEXT,
284
+ "config" JSONB NOT NULL,
285
+ "defaultProps" JSONB,
286
+ "defaultStyle" JSONB,
287
+ "preview" TEXT,
288
+ "version" INTEGER NOT NULL DEFAULT 1,
289
+ "sortOrder" INTEGER NOT NULL DEFAULT 0,
290
+ "source" TEXT NOT NULL DEFAULT 'manual',
291
+ "sourceId" TEXT,
292
+ "isHidden" BOOLEAN NOT NULL DEFAULT false,
293
+ "isDeleted" BOOLEAN NOT NULL DEFAULT false,
294
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
295
+ "updatedAt" TIMESTAMP(3) NOT NULL,
296
+ "tags" TEXT[] DEFAULT ARRAY[]::TEXT[],
297
+
298
+ CONSTRAINT "components_pkey" PRIMARY KEY ("id")
299
+ );
300
+
301
+ -- CreateTable
302
+ CREATE TABLE "blocks" (
303
+ "id" TEXT NOT NULL,
304
+ "name" TEXT NOT NULL,
305
+ "description" TEXT,
306
+ "category" TEXT,
307
+ "isDeleted" BOOLEAN NOT NULL DEFAULT false,
308
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
309
+ "updatedAt" TIMESTAMP(3) NOT NULL,
310
+
311
+ CONSTRAINT "blocks_pkey" PRIMARY KEY ("id")
312
+ );
313
+
314
+ -- CreateTable
315
+ CREATE TABLE "block_components" (
316
+ "id" TEXT NOT NULL,
317
+ "blockId" TEXT NOT NULL,
318
+ "componentId" TEXT NOT NULL,
319
+ "x" DOUBLE PRECISION NOT NULL DEFAULT 0,
320
+ "y" DOUBLE PRECISION NOT NULL DEFAULT 0,
321
+ "width" DOUBLE PRECISION NOT NULL DEFAULT 100,
322
+ "height" DOUBLE PRECISION NOT NULL DEFAULT 100,
323
+ "zIndex" INTEGER NOT NULL DEFAULT 0,
324
+ "propsOverride" JSONB,
325
+ "styleOverride" JSONB,
326
+
327
+ CONSTRAINT "block_components_pkey" PRIMARY KEY ("id")
328
+ );
329
+
330
+ -- CreateTable
331
+ CREATE TABLE "templates" (
332
+ "id" TEXT NOT NULL,
333
+ "name" TEXT NOT NULL,
334
+ "description" TEXT,
335
+ "category" TEXT,
336
+ "isDeleted" BOOLEAN NOT NULL DEFAULT false,
337
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
338
+ "updatedAt" TIMESTAMP(3) NOT NULL,
339
+
340
+ CONSTRAINT "templates_pkey" PRIMARY KEY ("id")
341
+ );
342
+
343
+ -- CreateTable
344
+ CREATE TABLE "template_blocks" (
345
+ "id" TEXT NOT NULL,
346
+ "templateId" TEXT NOT NULL,
347
+ "blockId" TEXT NOT NULL,
348
+ "order" INTEGER NOT NULL DEFAULT 0,
349
+ "x" DOUBLE PRECISION DEFAULT 0,
350
+ "y" DOUBLE PRECISION DEFAULT 0,
351
+ "width" DOUBLE PRECISION,
352
+ "height" DOUBLE PRECISION,
353
+
354
+ CONSTRAINT "template_blocks_pkey" PRIMARY KEY ("id")
355
+ );
356
+
357
+ -- CreateTable
358
+ CREATE TABLE "prd_pages" (
359
+ "id" TEXT NOT NULL,
360
+ "prdId" TEXT NOT NULL,
361
+ "parentId" TEXT,
362
+ "name" TEXT NOT NULL,
363
+ "order" INTEGER NOT NULL DEFAULT 0,
364
+ "type" TEXT NOT NULL DEFAULT 'page',
365
+ "canvas" JSONB,
366
+ "content" JSONB,
367
+ "version" INTEGER NOT NULL DEFAULT 1,
368
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
369
+ "updatedAt" TIMESTAMP(3) NOT NULL,
370
+
371
+ CONSTRAINT "prd_pages_pkey" PRIMARY KEY ("id")
372
+ );
373
+
374
+ -- CreateTable
375
+ CREATE TABLE "component_instances" (
376
+ "id" TEXT NOT NULL,
377
+ "pageId" TEXT NOT NULL,
378
+ "componentId" TEXT,
379
+ "blockInstanceId" TEXT,
380
+ "name" TEXT,
381
+ "x" DOUBLE PRECISION NOT NULL DEFAULT 0,
382
+ "y" DOUBLE PRECISION NOT NULL DEFAULT 0,
383
+ "width" DOUBLE PRECISION NOT NULL DEFAULT 100,
384
+ "height" DOUBLE PRECISION NOT NULL DEFAULT 100,
385
+ "zIndex" INTEGER NOT NULL DEFAULT 0,
386
+ "props" JSONB,
387
+ "style" JSONB,
388
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
389
+ "updatedAt" TIMESTAMP(3) NOT NULL,
390
+
391
+ CONSTRAINT "component_instances_pkey" PRIMARY KEY ("id")
392
+ );
393
+
394
+ -- CreateTable
395
+ CREATE TABLE "block_instances" (
396
+ "id" TEXT NOT NULL,
397
+ "pageId" TEXT NOT NULL,
398
+ "blockId" TEXT,
399
+ "name" TEXT,
400
+ "x" DOUBLE PRECISION NOT NULL DEFAULT 0,
401
+ "y" DOUBLE PRECISION NOT NULL DEFAULT 0,
402
+ "width" DOUBLE PRECISION NOT NULL DEFAULT 400,
403
+ "height" DOUBLE PRECISION NOT NULL DEFAULT 300,
404
+ "zIndex" INTEGER NOT NULL DEFAULT 0,
405
+ "props" JSONB,
406
+ "style" JSONB,
407
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
408
+ "updatedAt" TIMESTAMP(3) NOT NULL,
409
+
410
+ CONSTRAINT "block_instances_pkey" PRIMARY KEY ("id")
411
+ );
412
+
413
+ -- CreateTable
414
+ CREATE TABLE "prd_versions" (
415
+ "id" TEXT NOT NULL,
416
+ "prdId" TEXT NOT NULL,
417
+ "major" INTEGER NOT NULL DEFAULT 1,
418
+ "minor" INTEGER NOT NULL DEFAULT 0,
419
+ "patch" INTEGER NOT NULL DEFAULT 0,
420
+ "versionLabel" TEXT NOT NULL,
421
+ "parentVersion" TEXT,
422
+ "pageVersions" JSONB NOT NULL,
423
+ "notes" TEXT,
424
+ "userId" TEXT NOT NULL,
425
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
426
+ "updatedAt" TIMESTAMP(3),
427
+
428
+ CONSTRAINT "prd_versions_pkey" PRIMARY KEY ("id")
429
+ );
430
+
431
+ -- CreateTable
432
+ CREATE TABLE "page_versions" (
433
+ "id" TEXT NOT NULL,
434
+ "pageId" TEXT NOT NULL,
435
+ "version" INTEGER NOT NULL,
436
+ "notes" TEXT,
437
+ "canvas" JSONB,
438
+ "content" JSONB,
439
+ "restoredFromVersion" INTEGER,
440
+ "fromPRDVersionId" TEXT,
441
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
442
+
443
+ CONSTRAINT "page_versions_pkey" PRIMARY KEY ("id")
444
+ );
445
+
446
+ -- CreateTable
447
+ CREATE TABLE "reviews" (
448
+ "id" TEXT NOT NULL,
449
+ "prdId" TEXT NOT NULL,
450
+ "versionId" TEXT NOT NULL,
451
+ "status" "ReviewStatus" NOT NULL DEFAULT 'PENDING',
452
+ "reviewerId" TEXT,
453
+ "notes" TEXT,
454
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
455
+ "completedAt" TIMESTAMP(3),
456
+
457
+ CONSTRAINT "reviews_pkey" PRIMARY KEY ("id")
458
+ );
459
+
460
+ -- CreateTable
461
+ CREATE TABLE "review_comments" (
462
+ "id" TEXT NOT NULL,
463
+ "reviewId" TEXT NOT NULL,
464
+ "userId" TEXT NOT NULL,
465
+ "content" TEXT NOT NULL,
466
+ "pageId" TEXT,
467
+ "elementId" TEXT,
468
+ "parentId" TEXT,
469
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
470
+
471
+ CONSTRAINT "review_comments_pkey" PRIMARY KEY ("id")
472
+ );
473
+
474
+ -- CreateTable
475
+ CREATE TABLE "comments" (
476
+ "id" TEXT NOT NULL,
477
+ "prdId" TEXT NOT NULL,
478
+ "pageId" TEXT,
479
+ "elementId" TEXT,
480
+ "userId" TEXT NOT NULL,
481
+ "content" TEXT NOT NULL,
482
+ "parentId" TEXT,
483
+ "position" JSONB,
484
+ "resolved" BOOLEAN NOT NULL DEFAULT false,
485
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
486
+ "updatedAt" TIMESTAMP(3) NOT NULL,
487
+
488
+ CONSTRAINT "comments_pkey" PRIMARY KEY ("id")
489
+ );
490
+
491
+ -- CreateTable
492
+ CREATE TABLE "comment_ignores" (
493
+ "id" TEXT NOT NULL,
494
+ "userId" TEXT NOT NULL,
495
+ "commentId" TEXT NOT NULL,
496
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
497
+
498
+ CONSTRAINT "comment_ignores_pkey" PRIMARY KEY ("id")
499
+ );
500
+
501
+ -- CreateTable
502
+ CREATE TABLE "shares" (
503
+ "id" TEXT NOT NULL,
504
+ "prdId" TEXT NOT NULL,
505
+ "token" TEXT NOT NULL,
506
+ "type" TEXT NOT NULL DEFAULT 'prd',
507
+ "status" "ShareStatus" NOT NULL DEFAULT 'ACTIVE',
508
+ "password" TEXT,
509
+ "hasPassword" BOOLEAN NOT NULL DEFAULT false,
510
+ "expiresAt" TIMESTAMP(3),
511
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
512
+ "updatedAt" TIMESTAMP(3) NOT NULL,
513
+
514
+ CONSTRAINT "shares_pkey" PRIMARY KEY ("id")
515
+ );
516
+
517
+ -- CreateTable
518
+ CREATE TABLE "tags" (
519
+ "id" TEXT NOT NULL,
520
+ "name" TEXT NOT NULL,
521
+ "color" INTEGER NOT NULL DEFAULT 0,
522
+ "sortOrder" INTEGER NOT NULL DEFAULT 0,
523
+ "isHidden" BOOLEAN NOT NULL DEFAULT false,
524
+ "userId" TEXT NOT NULL,
525
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
526
+ "updatedAt" TIMESTAMP(3) NOT NULL,
527
+
528
+ CONSTRAINT "tags_pkey" PRIMARY KEY ("id")
529
+ );
530
+
531
+ -- CreateTable
532
+ CREATE TABLE "prd_tags" (
533
+ "id" TEXT NOT NULL,
534
+ "prdId" TEXT NOT NULL,
535
+ "tagId" TEXT NOT NULL,
536
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
537
+
538
+ CONSTRAINT "prd_tags_pkey" PRIMARY KEY ("id")
539
+ );
540
+
541
+ -- CreateTable
542
+ CREATE TABLE "component_tags" (
543
+ "id" TEXT NOT NULL,
544
+ "componentId" TEXT NOT NULL,
545
+ "tagId" TEXT NOT NULL,
546
+
547
+ CONSTRAINT "component_tags_pkey" PRIMARY KEY ("id")
548
+ );
549
+
550
+ -- CreateTable
551
+ CREATE TABLE "references" (
552
+ "id" TEXT NOT NULL,
553
+ "sourceModule" TEXT NOT NULL,
554
+ "sourceEntityId" TEXT NOT NULL,
555
+ "targetModule" TEXT NOT NULL,
556
+ "targetEntityId" TEXT NOT NULL,
557
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
558
+
559
+ CONSTRAINT "references_pkey" PRIMARY KEY ("id")
560
+ );
561
+
562
+ -- CreateTable
563
+ CREATE TABLE "share_versions" (
564
+ "id" TEXT NOT NULL,
565
+ "shareId" TEXT NOT NULL,
566
+ "versionId" TEXT NOT NULL,
567
+
568
+ CONSTRAINT "share_versions_pkey" PRIMARY KEY ("id")
569
+ );
570
+
571
+ -- CreateTable
572
+ CREATE TABLE "AnyHubApp" (
573
+ "id" TEXT NOT NULL,
574
+ "name" TEXT NOT NULL,
575
+ "displayName" TEXT NOT NULL,
576
+ "description" TEXT,
577
+ "version" TEXT NOT NULL DEFAULT '0.1.0',
578
+ "source" TEXT NOT NULL,
579
+ "url" TEXT,
580
+ "localPath" TEXT,
581
+ "proxyBasePath" TEXT,
582
+ "iconUrl" TEXT,
583
+ "pinned" BOOLEAN NOT NULL DEFAULT false,
584
+ "status" TEXT NOT NULL DEFAULT 'installing',
585
+ "userId" TEXT NOT NULL,
586
+ "githubUrl" TEXT,
587
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
588
+ "updatedAt" TIMESTAMP(3) NOT NULL,
589
+
590
+ CONSTRAINT "AnyHubApp_pkey" PRIMARY KEY ("id")
591
+ );
592
+
593
+ -- CreateTable
594
+ CREATE TABLE "AnyHubPermission" (
595
+ "id" TEXT NOT NULL,
596
+ "appId" TEXT NOT NULL,
597
+ "capability" TEXT NOT NULL,
598
+ "granted" BOOLEAN NOT NULL DEFAULT false,
599
+ "userId" TEXT NOT NULL,
600
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
601
+ "updatedAt" TIMESTAMP(3) NOT NULL,
602
+
603
+ CONSTRAINT "AnyHubPermission_pkey" PRIMARY KEY ("id")
604
+ );
605
+
606
+ -- CreateTable
607
+ CREATE TABLE "AnyHubMarketApp" (
608
+ "id" TEXT NOT NULL,
609
+ "name" TEXT NOT NULL,
610
+ "displayName" TEXT NOT NULL,
611
+ "description" TEXT,
612
+ "entryUrl" TEXT NOT NULL,
613
+ "icon" TEXT,
614
+ "iconType" "IconType" NOT NULL DEFAULT 'ICON',
615
+ "logo" TEXT,
616
+ "category" TEXT,
617
+ "tags" TEXT,
618
+ "downloads" INTEGER NOT NULL DEFAULT 0,
619
+ "capabilities" JSONB NOT NULL,
620
+ "status" "MarketplaceAppStatus" NOT NULL DEFAULT 'DRAFT',
621
+ "publishedAt" TIMESTAMP(3),
622
+ "userId" TEXT NOT NULL,
623
+ "recommendationId" TEXT,
624
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
625
+ "updatedAt" TIMESTAMP(3) NOT NULL,
626
+
627
+ CONSTRAINT "AnyHubMarketApp_pkey" PRIMARY KEY ("id")
628
+ );
629
+
630
+ -- CreateTable
631
+ CREATE TABLE "AnyHubRecommendation" (
632
+ "id" TEXT NOT NULL,
633
+ "githubUrl" TEXT NOT NULL,
634
+ "name" TEXT,
635
+ "displayName" TEXT,
636
+ "description" TEXT,
637
+ "status" TEXT NOT NULL DEFAULT 'pending',
638
+ "reviewedBy" TEXT,
639
+ "reviewedAt" TIMESTAMP(3),
640
+ "marketplaceAppId" TEXT,
641
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
642
+ "updatedAt" TIMESTAMP(3) NOT NULL,
643
+
644
+ CONSTRAINT "AnyHubRecommendation_pkey" PRIMARY KEY ("id")
645
+ );
646
+
647
+ -- CreateTable
648
+ CREATE TABLE "AnyHubRecommender" (
649
+ "id" TEXT NOT NULL,
650
+ "recommendationId" TEXT NOT NULL,
651
+ "userId" TEXT NOT NULL,
652
+ "reason" TEXT,
653
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
654
+
655
+ CONSTRAINT "AnyHubRecommender_pkey" PRIMARY KEY ("id")
656
+ );
657
+
658
+ -- CreateTable
659
+ CREATE TABLE "design_projects" (
660
+ "id" TEXT NOT NULL,
661
+ "name" TEXT NOT NULL,
662
+ "documentId" TEXT,
663
+ "sketchName" TEXT,
664
+ "version" INTEGER NOT NULL DEFAULT 1,
665
+ "userId" TEXT NOT NULL,
666
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
667
+ "updatedAt" TIMESTAMP(3) NOT NULL,
668
+
669
+ CONSTRAINT "design_projects_pkey" PRIMARY KEY ("id")
670
+ );
671
+
672
+ -- CreateTable
673
+ CREATE TABLE "design_artboards" (
674
+ "id" TEXT NOT NULL,
675
+ "projectId" TEXT NOT NULL,
676
+ "name" TEXT NOT NULL,
677
+ "pageName" TEXT,
678
+ "width" INTEGER NOT NULL,
679
+ "height" INTEGER NOT NULL,
680
+ "pngPath" TEXT NOT NULL,
681
+ "svgPath" TEXT,
682
+ "annotationJson" JSONB,
683
+ "layerCount" INTEGER,
684
+ "sortOrder" INTEGER NOT NULL DEFAULT 0,
685
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
686
+
687
+ CONSTRAINT "design_artboards_pkey" PRIMARY KEY ("id")
688
+ );
689
+
690
+ -- CreateTable
691
+ CREATE TABLE "design_artboard_exports" (
692
+ "id" TEXT NOT NULL,
693
+ "artboardId" TEXT NOT NULL,
694
+ "layerName" TEXT NOT NULL,
695
+ "layerId" TEXT NOT NULL,
696
+ "scale" INTEGER NOT NULL,
697
+ "format" TEXT NOT NULL DEFAULT 'png',
698
+ "filePath" TEXT NOT NULL,
699
+ "width" INTEGER NOT NULL,
700
+ "height" INTEGER NOT NULL,
701
+
702
+ CONSTRAINT "design_artboard_exports_pkey" PRIMARY KEY ("id")
703
+ );
704
+
705
+ -- CreateTable
706
+ CREATE TABLE "ai_providers" (
707
+ "id" TEXT NOT NULL,
708
+ "providerId" TEXT NOT NULL,
709
+ "displayName" TEXT NOT NULL,
710
+ "brandName" TEXT NOT NULL,
711
+ "description" TEXT NOT NULL,
712
+ "category" TEXT NOT NULL DEFAULT 'popular',
713
+ "adapterKind" TEXT NOT NULL,
714
+ "defaultBaseUrl" TEXT,
715
+ "keyUrl" TEXT,
716
+ "docsUrl" TEXT,
717
+ "keyPlaceholder" TEXT,
718
+ "iconSlug" TEXT,
719
+ "brandColor" TEXT NOT NULL DEFAULT '#6467F2',
720
+ "badge" TEXT,
721
+ "isLocal" BOOLEAN NOT NULL DEFAULT false,
722
+ "enabled" BOOLEAN NOT NULL DEFAULT true,
723
+ "models" JSONB NOT NULL,
724
+ "sortOrder" INTEGER NOT NULL DEFAULT 0,
725
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
726
+ "updatedAt" TIMESTAMP(3) NOT NULL,
727
+
728
+ CONSTRAINT "ai_providers_pkey" PRIMARY KEY ("id")
729
+ );
730
+
731
+ -- CreateTable
732
+ CREATE TABLE "ai_provider_configs" (
733
+ "id" TEXT NOT NULL,
734
+ "userId" TEXT NOT NULL,
735
+ "providerId" TEXT NOT NULL,
736
+ "apiKey" TEXT,
737
+ "baseUrl" TEXT,
738
+ "enabled" BOOLEAN NOT NULL DEFAULT false,
739
+ "models" JSONB,
740
+ "customModels" JSONB,
741
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
742
+ "updatedAt" TIMESTAMP(3) NOT NULL,
743
+
744
+ CONSTRAINT "ai_provider_configs_pkey" PRIMARY KEY ("id")
745
+ );
746
+
747
+ -- CreateTable
748
+ CREATE TABLE "third_party_dependencies" (
749
+ "id" TEXT NOT NULL,
750
+ "name" TEXT NOT NULL,
751
+ "displayName" TEXT,
752
+ "description" TEXT,
753
+ "homepage" TEXT,
754
+ "category" TEXT NOT NULL DEFAULT 'other',
755
+ "isWatched" BOOLEAN NOT NULL DEFAULT true,
756
+ "priority" TEXT NOT NULL DEFAULT 'normal',
757
+ "latestVersion" TEXT,
758
+ "latestChangelog" TEXT,
759
+ "lastSyncAt" TIMESTAMP(3),
760
+ "notes" TEXT,
761
+ "sortOrder" INTEGER NOT NULL DEFAULT 0,
762
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
763
+ "updatedAt" TIMESTAMP(3) NOT NULL,
764
+
765
+ CONSTRAINT "third_party_dependencies_pkey" PRIMARY KEY ("id")
766
+ );
767
+
768
+ -- CreateTable
769
+ CREATE TABLE "legal_regulations" (
770
+ "id" TEXT NOT NULL,
771
+ "canonicalId" TEXT NOT NULL,
772
+ "title" TEXT NOT NULL,
773
+ "jurisdiction" TEXT NOT NULL,
774
+ "region" TEXT,
775
+ "country" TEXT,
776
+ "category" TEXT NOT NULL,
777
+ "issuingAuthority" TEXT,
778
+ "effectiveDate" TIMESTAMP(3),
779
+ "summary" TEXT,
780
+ "content" TEXT,
781
+ "sourceUrl" TEXT,
782
+ "likeCount" INTEGER NOT NULL DEFAULT 0,
783
+ "tags" JSONB NOT NULL DEFAULT '[]',
784
+ "visibility" TEXT NOT NULL DEFAULT 'private',
785
+ "userId" TEXT NOT NULL,
786
+ "isDeleted" BOOLEAN NOT NULL DEFAULT false,
787
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
788
+ "updatedAt" TIMESTAMP(3) NOT NULL,
789
+
790
+ CONSTRAINT "legal_regulations_pkey" PRIMARY KEY ("id")
791
+ );
792
+
793
+ -- CreateTable
794
+ CREATE TABLE "industry_compliances" (
795
+ "id" TEXT NOT NULL,
796
+ "canonicalId" TEXT NOT NULL,
797
+ "title" TEXT NOT NULL,
798
+ "industry" TEXT NOT NULL,
799
+ "regulatoryBody" TEXT,
800
+ "region" TEXT,
801
+ "summary" TEXT,
802
+ "content" TEXT,
803
+ "requirements" JSONB NOT NULL DEFAULT '[]',
804
+ "sourceUrl" TEXT,
805
+ "likeCount" INTEGER NOT NULL DEFAULT 0,
806
+ "tags" JSONB NOT NULL DEFAULT '[]',
807
+ "visibility" TEXT NOT NULL DEFAULT 'private',
808
+ "userId" TEXT NOT NULL,
809
+ "isDeleted" BOOLEAN NOT NULL DEFAULT false,
810
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
811
+ "updatedAt" TIMESTAMP(3) NOT NULL,
812
+
813
+ CONSTRAINT "industry_compliances_pkey" PRIMARY KEY ("id")
814
+ );
815
+
816
+ -- CreateTable
817
+ CREATE TABLE "dictionary_terms" (
818
+ "id" TEXT NOT NULL,
819
+ "canonicalId" TEXT NOT NULL,
820
+ "title" TEXT NOT NULL,
821
+ "industry" TEXT NOT NULL,
822
+ "definition" TEXT,
823
+ "aliases" JSONB NOT NULL DEFAULT '[]',
824
+ "examples" JSONB NOT NULL DEFAULT '[]',
825
+ "referenceUrl" TEXT,
826
+ "tags" JSONB NOT NULL DEFAULT '[]',
827
+ "visibility" TEXT NOT NULL DEFAULT 'private',
828
+ "userId" TEXT NOT NULL,
829
+ "isDeleted" BOOLEAN NOT NULL DEFAULT false,
830
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
831
+ "updatedAt" TIMESTAMP(3) NOT NULL,
832
+
833
+ CONSTRAINT "dictionary_terms_pkey" PRIMARY KEY ("id")
834
+ );
835
+
836
+ -- CreateTable
837
+ CREATE TABLE "website_bookmarks" (
838
+ "id" TEXT NOT NULL,
839
+ "canonicalId" TEXT NOT NULL,
840
+ "title" TEXT NOT NULL,
841
+ "url" TEXT NOT NULL,
842
+ "categoryId" TEXT,
843
+ "summary" TEXT,
844
+ "faviconUrl" TEXT,
845
+ "faviconSyncedAt" TIMESTAMP(3),
846
+ "isGithub" BOOLEAN NOT NULL DEFAULT false,
847
+ "githubOwner" TEXT,
848
+ "githubRepo" TEXT,
849
+ "githubStars" INTEGER,
850
+ "githubLatestVersion" TEXT,
851
+ "githubVersionDate" TIMESTAMP(3),
852
+ "githubRepoUpdatedAt" TIMESTAMP(3),
853
+ "githubSyncedAt" TIMESTAMP(3),
854
+ "tags" JSONB NOT NULL DEFAULT '[]',
855
+ "visibility" TEXT NOT NULL DEFAULT 'private',
856
+ "userId" TEXT NOT NULL,
857
+ "isDeleted" BOOLEAN NOT NULL DEFAULT false,
858
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
859
+ "updatedAt" TIMESTAMP(3) NOT NULL,
860
+
861
+ CONSTRAINT "website_bookmarks_pkey" PRIMARY KEY ("id")
862
+ );
863
+
864
+ -- CreateTable
865
+ CREATE TABLE "bookmark_categories" (
866
+ "id" TEXT NOT NULL,
867
+ "name" TEXT NOT NULL,
868
+ "icon" TEXT NOT NULL DEFAULT 'Globe',
869
+ "sortOrder" INTEGER NOT NULL DEFAULT 0,
870
+ "isDefault" BOOLEAN NOT NULL DEFAULT false,
871
+ "userId" TEXT,
872
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
873
+ "updatedAt" TIMESTAMP(3) NOT NULL,
874
+
875
+ CONSTRAINT "bookmark_categories_pkey" PRIMARY KEY ("id")
876
+ );
877
+
878
+ -- CreateTable
879
+ CREATE TABLE "knowledge_share_records" (
880
+ "id" TEXT NOT NULL,
881
+ "entityType" TEXT NOT NULL,
882
+ "canonicalId" TEXT NOT NULL,
883
+ "userId" TEXT NOT NULL,
884
+ "sharedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
885
+
886
+ CONSTRAINT "knowledge_share_records_pkey" PRIMARY KEY ("id")
887
+ );
888
+
889
+ -- CreateTable
890
+ CREATE TABLE "article_favorites" (
891
+ "id" TEXT NOT NULL,
892
+ "entityType" TEXT NOT NULL,
893
+ "entityId" TEXT NOT NULL,
894
+ "userId" TEXT NOT NULL,
895
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
896
+
897
+ CONSTRAINT "article_favorites_pkey" PRIMARY KEY ("id")
898
+ );
899
+
900
+ -- CreateTable
901
+ CREATE TABLE "stories" (
902
+ "id" TEXT NOT NULL,
903
+ "sequenceId" INTEGER NOT NULL,
904
+ "boardOrder" INTEGER NOT NULL DEFAULT 0,
905
+ "identifier" TEXT NOT NULL,
906
+ "projectId" TEXT,
907
+ "name" TEXT NOT NULL,
908
+ "description" TEXT,
909
+ "state" TEXT NOT NULL DEFAULT 'backlog',
910
+ "priority" TEXT NOT NULL DEFAULT 'none',
911
+ "assigneeId" TEXT,
912
+ "startDate" TIMESTAMP(3),
913
+ "targetDate" TIMESTAMP(3),
914
+ "createdById" TEXT NOT NULL,
915
+ "updatedById" TEXT,
916
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
917
+ "updatedAt" TIMESTAMP(3) NOT NULL,
918
+ "parentId" TEXT,
919
+
920
+ CONSTRAINT "stories_pkey" PRIMARY KEY ("id")
921
+ );
922
+
923
+ -- CreateTable
924
+ CREATE TABLE "labels" (
925
+ "id" TEXT NOT NULL,
926
+ "name" TEXT NOT NULL,
927
+ "color" TEXT NOT NULL DEFAULT '#6b7280',
928
+ "createdById" TEXT NOT NULL,
929
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
930
+
931
+ CONSTRAINT "labels_pkey" PRIMARY KEY ("id")
932
+ );
933
+
934
+ -- CreateTable
935
+ CREATE TABLE "story_labels" (
936
+ "storyId" TEXT NOT NULL,
937
+ "labelId" TEXT NOT NULL,
938
+
939
+ CONSTRAINT "story_labels_pkey" PRIMARY KEY ("storyId","labelId")
940
+ );
941
+
942
+ -- CreateTable
943
+ CREATE TABLE "story_activities" (
944
+ "id" TEXT NOT NULL,
945
+ "storyId" TEXT NOT NULL,
946
+ "userId" TEXT NOT NULL,
947
+ "action" TEXT NOT NULL,
948
+ "field" TEXT,
949
+ "oldValue" TEXT,
950
+ "newValue" TEXT,
951
+ "metadata" JSONB,
952
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
953
+
954
+ CONSTRAINT "story_activities_pkey" PRIMARY KEY ("id")
955
+ );
956
+
957
+ -- CreateTable
958
+ CREATE TABLE "sequence_counters" (
959
+ "id" TEXT NOT NULL,
960
+ "scope" TEXT NOT NULL,
961
+ "seq" INTEGER NOT NULL DEFAULT 0,
962
+
963
+ CONSTRAINT "sequence_counters_pkey" PRIMARY KEY ("id")
964
+ );
965
+
966
+ -- CreateTable
967
+ CREATE TABLE "story_comments" (
968
+ "id" TEXT NOT NULL,
969
+ "storyId" TEXT NOT NULL,
970
+ "userId" TEXT NOT NULL,
971
+ "parentId" TEXT,
972
+ "content" TEXT NOT NULL,
973
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
974
+ "updatedAt" TIMESTAMP(3) NOT NULL,
975
+
976
+ CONSTRAINT "story_comments_pkey" PRIMARY KEY ("id")
977
+ );
978
+
979
+ -- CreateTable
980
+ CREATE TABLE "story_reactions" (
981
+ "id" TEXT NOT NULL,
982
+ "storyId" TEXT NOT NULL,
983
+ "userId" TEXT NOT NULL,
984
+ "emoji" TEXT NOT NULL,
985
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
986
+
987
+ CONSTRAINT "story_reactions_pkey" PRIMARY KEY ("id")
988
+ );
989
+
990
+ -- CreateTable
991
+ CREATE TABLE "comment_reactions" (
992
+ "id" TEXT NOT NULL,
993
+ "commentId" TEXT NOT NULL,
994
+ "userId" TEXT NOT NULL,
995
+ "emoji" TEXT NOT NULL,
996
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
997
+
998
+ CONSTRAINT "comment_reactions_pkey" PRIMARY KEY ("id")
999
+ );
1000
+
1001
+ -- CreateTable
1002
+ CREATE TABLE "story_dependencies" (
1003
+ "id" TEXT NOT NULL,
1004
+ "sourceId" TEXT NOT NULL,
1005
+ "targetId" TEXT NOT NULL,
1006
+ "type" "DependencyType" NOT NULL,
1007
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1008
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1009
+
1010
+ CONSTRAINT "story_dependencies_pkey" PRIMARY KEY ("id")
1011
+ );
1012
+
1013
+ -- CreateTable
1014
+ CREATE TABLE "story_links" (
1015
+ "id" TEXT NOT NULL,
1016
+ "storyId" TEXT NOT NULL,
1017
+ "url" TEXT NOT NULL,
1018
+ "title" TEXT,
1019
+ "description" TEXT,
1020
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1021
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1022
+
1023
+ CONSTRAINT "story_links_pkey" PRIMARY KEY ("id")
1024
+ );
1025
+
1026
+ -- CreateTable
1027
+ CREATE TABLE "story_attachments" (
1028
+ "id" TEXT NOT NULL,
1029
+ "storyId" TEXT NOT NULL,
1030
+ "fileName" TEXT NOT NULL,
1031
+ "fileSize" BIGINT NOT NULL,
1032
+ "mimeType" TEXT NOT NULL,
1033
+ "storageUrl" TEXT NOT NULL,
1034
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1035
+
1036
+ CONSTRAINT "story_attachments_pkey" PRIMARY KEY ("id")
1037
+ );
1038
+
1039
+ -- CreateTable
1040
+ CREATE TABLE "story_prd_links" (
1041
+ "id" TEXT NOT NULL,
1042
+ "storyId" TEXT NOT NULL,
1043
+ "prdId" TEXT NOT NULL,
1044
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1045
+
1046
+ CONSTRAINT "story_prd_links_pkey" PRIMARY KEY ("id")
1047
+ );
1048
+
1049
+ -- CreateTable
1050
+ CREATE TABLE "story_doc_links" (
1051
+ "id" TEXT NOT NULL,
1052
+ "storyId" TEXT NOT NULL,
1053
+ "docId" TEXT NOT NULL,
1054
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1055
+
1056
+ CONSTRAINT "story_doc_links_pkey" PRIMARY KEY ("id")
1057
+ );
1058
+
1059
+ -- CreateTable
1060
+ CREATE TABLE "story_filter_views" (
1061
+ "id" TEXT NOT NULL,
1062
+ "userId" TEXT NOT NULL,
1063
+ "name" TEXT NOT NULL,
1064
+ "description" TEXT,
1065
+ "icon" TEXT NOT NULL DEFAULT 'list',
1066
+ "projectId" TEXT,
1067
+ "filters" JSONB NOT NULL,
1068
+ "displayOptions" JSONB NOT NULL,
1069
+ "sortOrder" INTEGER NOT NULL DEFAULT 0,
1070
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
1071
+ "updatedAt" TIMESTAMP(3) NOT NULL,
1072
+
1073
+ CONSTRAINT "story_filter_views_pkey" PRIMARY KEY ("id")
1074
+ );
1075
+
1076
+ -- CreateIndex
1077
+ CREATE UNIQUE INDEX "system_settings_key_key" ON "system_settings"("key");
1078
+
1079
+ -- CreateIndex
1080
+ CREATE INDEX "system_settings_category_idx" ON "system_settings"("category");
1081
+
1082
+ -- CreateIndex
1083
+ CREATE UNIQUE INDEX "users_email_key" ON "users"("email");
1084
+
1085
+ -- CreateIndex
1086
+ CREATE UNIQUE INDEX "users_username_key" ON "users"("username");
1087
+
1088
+ -- CreateIndex
1089
+ CREATE INDEX "accounts_userId_idx" ON "accounts"("userId");
1090
+
1091
+ -- CreateIndex
1092
+ CREATE UNIQUE INDEX "accounts_provider_providerAccountId_key" ON "accounts"("provider", "providerAccountId");
1093
+
1094
+ -- CreateIndex
1095
+ CREATE INDEX "projects_ownerId_idx" ON "projects"("ownerId");
1096
+
1097
+ -- CreateIndex
1098
+ CREATE UNIQUE INDEX "projects_ownerId_displayId_key" ON "projects"("ownerId", "displayId");
1099
+
1100
+ -- CreateIndex
1101
+ CREATE INDEX "project_members_projectId_idx" ON "project_members"("projectId");
1102
+
1103
+ -- CreateIndex
1104
+ CREATE UNIQUE INDEX "project_members_projectId_userId_key" ON "project_members"("projectId", "userId");
1105
+
1106
+ -- CreateIndex
1107
+ CREATE INDEX "project_activities_projectId_createdAt_idx" ON "project_activities"("projectId", "createdAt");
1108
+
1109
+ -- CreateIndex
1110
+ CREATE INDEX "conversations_userId_updatedAt_idx" ON "conversations"("userId", "updatedAt");
1111
+
1112
+ -- CreateIndex
1113
+ CREATE INDEX "messages_conversationId_createdAt_idx" ON "messages"("conversationId", "createdAt");
1114
+
1115
+ -- CreateIndex
1116
+ CREATE UNIQUE INDEX "invitation_codes_code_key" ON "invitation_codes"("code");
1117
+
1118
+ -- CreateIndex
1119
+ CREATE UNIQUE INDEX "password_reset_tokens_token_key" ON "password_reset_tokens"("token");
1120
+
1121
+ -- CreateIndex
1122
+ CREATE INDEX "knowledge_bases_userId_idx" ON "knowledge_bases"("userId");
1123
+
1124
+ -- CreateIndex
1125
+ CREATE INDEX "knowledge_documents_kbId_idx" ON "knowledge_documents"("kbId");
1126
+
1127
+ -- CreateIndex
1128
+ CREATE INDEX "knowledge_documents_parentId_idx" ON "knowledge_documents"("parentId");
1129
+
1130
+ -- CreateIndex
1131
+ CREATE INDEX "knowledge_documents_kbId_isHomepage_idx" ON "knowledge_documents"("kbId", "isHomepage");
1132
+
1133
+ -- CreateIndex
1134
+ CREATE INDEX "prds_userId_idx" ON "prds"("userId");
1135
+
1136
+ -- CreateIndex
1137
+ CREATE INDEX "agent_conversations_userId_prdId_idx" ON "agent_conversations"("userId", "prdId");
1138
+
1139
+ -- CreateIndex
1140
+ CREATE INDEX "agent_messages_conversationId_idx" ON "agent_messages"("conversationId");
1141
+
1142
+ -- CreateIndex
1143
+ CREATE INDEX "components_type_category_idx" ON "components"("type", "category");
1144
+
1145
+ -- CreateIndex
1146
+ CREATE INDEX "components_isDeleted_idx" ON "components"("isDeleted");
1147
+
1148
+ -- CreateIndex
1149
+ CREATE INDEX "components_isHidden_idx" ON "components"("isHidden");
1150
+
1151
+ -- CreateIndex
1152
+ CREATE INDEX "components_sortOrder_idx" ON "components"("sortOrder");
1153
+
1154
+ -- CreateIndex
1155
+ CREATE INDEX "blocks_isDeleted_idx" ON "blocks"("isDeleted");
1156
+
1157
+ -- CreateIndex
1158
+ CREATE INDEX "templates_isDeleted_idx" ON "templates"("isDeleted");
1159
+
1160
+ -- CreateIndex
1161
+ CREATE INDEX "prd_pages_prdId_order_idx" ON "prd_pages"("prdId", "order");
1162
+
1163
+ -- CreateIndex
1164
+ CREATE INDEX "component_instances_pageId_idx" ON "component_instances"("pageId");
1165
+
1166
+ -- CreateIndex
1167
+ CREATE INDEX "block_instances_pageId_idx" ON "block_instances"("pageId");
1168
+
1169
+ -- CreateIndex
1170
+ CREATE INDEX "prd_versions_prdId_createdAt_idx" ON "prd_versions"("prdId", "createdAt");
1171
+
1172
+ -- CreateIndex
1173
+ CREATE INDEX "prd_versions_userId_idx" ON "prd_versions"("userId");
1174
+
1175
+ -- CreateIndex
1176
+ CREATE INDEX "page_versions_pageId_createdAt_idx" ON "page_versions"("pageId", "createdAt");
1177
+
1178
+ -- CreateIndex
1179
+ CREATE INDEX "page_versions_pageId_version_idx" ON "page_versions"("pageId", "version");
1180
+
1181
+ -- CreateIndex
1182
+ CREATE INDEX "reviews_prdId_idx" ON "reviews"("prdId");
1183
+
1184
+ -- CreateIndex
1185
+ CREATE INDEX "reviews_versionId_idx" ON "reviews"("versionId");
1186
+
1187
+ -- CreateIndex
1188
+ CREATE INDEX "reviews_reviewerId_idx" ON "reviews"("reviewerId");
1189
+
1190
+ -- CreateIndex
1191
+ CREATE UNIQUE INDEX "reviews_prdId_versionId_key" ON "reviews"("prdId", "versionId");
1192
+
1193
+ -- CreateIndex
1194
+ CREATE INDEX "review_comments_reviewId_idx" ON "review_comments"("reviewId");
1195
+
1196
+ -- CreateIndex
1197
+ CREATE INDEX "review_comments_userId_idx" ON "review_comments"("userId");
1198
+
1199
+ -- CreateIndex
1200
+ CREATE INDEX "review_comments_parentId_idx" ON "review_comments"("parentId");
1201
+
1202
+ -- CreateIndex
1203
+ CREATE INDEX "comments_prdId_idx" ON "comments"("prdId");
1204
+
1205
+ -- CreateIndex
1206
+ CREATE INDEX "comments_userId_idx" ON "comments"("userId");
1207
+
1208
+ -- CreateIndex
1209
+ CREATE INDEX "comments_parentId_idx" ON "comments"("parentId");
1210
+
1211
+ -- CreateIndex
1212
+ CREATE INDEX "comments_pageId_idx" ON "comments"("pageId");
1213
+
1214
+ -- CreateIndex
1215
+ CREATE INDEX "comment_ignores_userId_idx" ON "comment_ignores"("userId");
1216
+
1217
+ -- CreateIndex
1218
+ CREATE INDEX "comment_ignores_commentId_idx" ON "comment_ignores"("commentId");
1219
+
1220
+ -- CreateIndex
1221
+ CREATE UNIQUE INDEX "comment_ignores_userId_commentId_key" ON "comment_ignores"("userId", "commentId");
1222
+
1223
+ -- CreateIndex
1224
+ CREATE UNIQUE INDEX "shares_token_key" ON "shares"("token");
1225
+
1226
+ -- CreateIndex
1227
+ CREATE INDEX "shares_token_idx" ON "shares"("token");
1228
+
1229
+ -- CreateIndex
1230
+ CREATE INDEX "shares_prdId_type_status_idx" ON "shares"("prdId", "type", "status");
1231
+
1232
+ -- CreateIndex
1233
+ CREATE INDEX "shares_status_idx" ON "shares"("status");
1234
+
1235
+ -- CreateIndex
1236
+ CREATE INDEX "shares_expiresAt_idx" ON "shares"("expiresAt");
1237
+
1238
+ -- CreateIndex
1239
+ CREATE INDEX "tags_sortOrder_idx" ON "tags"("sortOrder");
1240
+
1241
+ -- CreateIndex
1242
+ CREATE INDEX "tags_userId_idx" ON "tags"("userId");
1243
+
1244
+ -- CreateIndex
1245
+ CREATE UNIQUE INDEX "tags_name_userId_key" ON "tags"("name", "userId");
1246
+
1247
+ -- CreateIndex
1248
+ CREATE INDEX "prd_tags_prdId_idx" ON "prd_tags"("prdId");
1249
+
1250
+ -- CreateIndex
1251
+ CREATE INDEX "prd_tags_tagId_idx" ON "prd_tags"("tagId");
1252
+
1253
+ -- CreateIndex
1254
+ CREATE UNIQUE INDEX "prd_tags_prdId_tagId_key" ON "prd_tags"("prdId", "tagId");
1255
+
1256
+ -- CreateIndex
1257
+ CREATE UNIQUE INDEX "component_tags_componentId_tagId_key" ON "component_tags"("componentId", "tagId");
1258
+
1259
+ -- CreateIndex
1260
+ CREATE INDEX "references_sourceModule_sourceEntityId_idx" ON "references"("sourceModule", "sourceEntityId");
1261
+
1262
+ -- CreateIndex
1263
+ CREATE INDEX "references_targetModule_targetEntityId_idx" ON "references"("targetModule", "targetEntityId");
1264
+
1265
+ -- CreateIndex
1266
+ CREATE INDEX "share_versions_shareId_idx" ON "share_versions"("shareId");
1267
+
1268
+ -- CreateIndex
1269
+ CREATE INDEX "share_versions_versionId_idx" ON "share_versions"("versionId");
1270
+
1271
+ -- CreateIndex
1272
+ CREATE UNIQUE INDEX "share_versions_shareId_versionId_key" ON "share_versions"("shareId", "versionId");
1273
+
1274
+ -- CreateIndex
1275
+ CREATE UNIQUE INDEX "AnyHubApp_name_key" ON "AnyHubApp"("name");
1276
+
1277
+ -- CreateIndex
1278
+ CREATE INDEX "AnyHubApp_userId_idx" ON "AnyHubApp"("userId");
1279
+
1280
+ -- CreateIndex
1281
+ CREATE INDEX "AnyHubApp_pinned_idx" ON "AnyHubApp"("pinned");
1282
+
1283
+ -- CreateIndex
1284
+ CREATE INDEX "AnyHubPermission_appId_idx" ON "AnyHubPermission"("appId");
1285
+
1286
+ -- CreateIndex
1287
+ CREATE UNIQUE INDEX "AnyHubPermission_appId_capability_userId_key" ON "AnyHubPermission"("appId", "capability", "userId");
1288
+
1289
+ -- CreateIndex
1290
+ CREATE UNIQUE INDEX "AnyHubMarketApp_recommendationId_key" ON "AnyHubMarketApp"("recommendationId");
1291
+
1292
+ -- CreateIndex
1293
+ CREATE INDEX "AnyHubMarketApp_status_idx" ON "AnyHubMarketApp"("status");
1294
+
1295
+ -- CreateIndex
1296
+ CREATE INDEX "AnyHubMarketApp_category_idx" ON "AnyHubMarketApp"("category");
1297
+
1298
+ -- CreateIndex
1299
+ CREATE UNIQUE INDEX "AnyHubRecommendation_githubUrl_key" ON "AnyHubRecommendation"("githubUrl");
1300
+
1301
+ -- CreateIndex
1302
+ CREATE INDEX "AnyHubRecommendation_status_idx" ON "AnyHubRecommendation"("status");
1303
+
1304
+ -- CreateIndex
1305
+ CREATE UNIQUE INDEX "AnyHubRecommender_recommendationId_userId_key" ON "AnyHubRecommender"("recommendationId", "userId");
1306
+
1307
+ -- CreateIndex
1308
+ CREATE INDEX "design_projects_userId_idx" ON "design_projects"("userId");
1309
+
1310
+ -- CreateIndex
1311
+ CREATE INDEX "design_artboards_projectId_idx" ON "design_artboards"("projectId");
1312
+
1313
+ -- CreateIndex
1314
+ CREATE UNIQUE INDEX "design_artboard_exports_artboardId_layerId_scale_key" ON "design_artboard_exports"("artboardId", "layerId", "scale");
1315
+
1316
+ -- CreateIndex
1317
+ CREATE UNIQUE INDEX "ai_providers_providerId_key" ON "ai_providers"("providerId");
1318
+
1319
+ -- CreateIndex
1320
+ CREATE INDEX "ai_provider_configs_userId_idx" ON "ai_provider_configs"("userId");
1321
+
1322
+ -- CreateIndex
1323
+ CREATE INDEX "ai_provider_configs_providerId_idx" ON "ai_provider_configs"("providerId");
1324
+
1325
+ -- CreateIndex
1326
+ CREATE UNIQUE INDEX "ai_provider_configs_userId_providerId_key" ON "ai_provider_configs"("userId", "providerId");
1327
+
1328
+ -- CreateIndex
1329
+ CREATE UNIQUE INDEX "third_party_dependencies_name_key" ON "third_party_dependencies"("name");
1330
+
1331
+ -- CreateIndex
1332
+ CREATE INDEX "third_party_dependencies_category_idx" ON "third_party_dependencies"("category");
1333
+
1334
+ -- CreateIndex
1335
+ CREATE INDEX "third_party_dependencies_isWatched_idx" ON "third_party_dependencies"("isWatched");
1336
+
1337
+ -- CreateIndex
1338
+ CREATE INDEX "legal_regulations_canonicalId_visibility_idx" ON "legal_regulations"("canonicalId", "visibility");
1339
+
1340
+ -- CreateIndex
1341
+ CREATE INDEX "legal_regulations_userId_visibility_idx" ON "legal_regulations"("userId", "visibility");
1342
+
1343
+ -- CreateIndex
1344
+ CREATE INDEX "legal_regulations_jurisdiction_category_idx" ON "legal_regulations"("jurisdiction", "category");
1345
+
1346
+ -- CreateIndex
1347
+ CREATE INDEX "industry_compliances_canonicalId_visibility_idx" ON "industry_compliances"("canonicalId", "visibility");
1348
+
1349
+ -- CreateIndex
1350
+ CREATE INDEX "industry_compliances_userId_visibility_idx" ON "industry_compliances"("userId", "visibility");
1351
+
1352
+ -- CreateIndex
1353
+ CREATE INDEX "industry_compliances_industry_idx" ON "industry_compliances"("industry");
1354
+
1355
+ -- CreateIndex
1356
+ CREATE INDEX "dictionary_terms_canonicalId_visibility_idx" ON "dictionary_terms"("canonicalId", "visibility");
1357
+
1358
+ -- CreateIndex
1359
+ CREATE INDEX "dictionary_terms_userId_visibility_idx" ON "dictionary_terms"("userId", "visibility");
1360
+
1361
+ -- CreateIndex
1362
+ CREATE INDEX "dictionary_terms_title_idx" ON "dictionary_terms"("title");
1363
+
1364
+ -- CreateIndex
1365
+ CREATE INDEX "website_bookmarks_canonicalId_visibility_idx" ON "website_bookmarks"("canonicalId", "visibility");
1366
+
1367
+ -- CreateIndex
1368
+ CREATE INDEX "website_bookmarks_userId_visibility_idx" ON "website_bookmarks"("userId", "visibility");
1369
+
1370
+ -- CreateIndex
1371
+ CREATE INDEX "website_bookmarks_categoryId_idx" ON "website_bookmarks"("categoryId");
1372
+
1373
+ -- CreateIndex
1374
+ CREATE INDEX "website_bookmarks_isGithub_idx" ON "website_bookmarks"("isGithub");
1375
+
1376
+ -- CreateIndex
1377
+ CREATE INDEX "bookmark_categories_userId_idx" ON "bookmark_categories"("userId");
1378
+
1379
+ -- CreateIndex
1380
+ CREATE UNIQUE INDEX "bookmark_categories_userId_name_key" ON "bookmark_categories"("userId", "name");
1381
+
1382
+ -- CreateIndex
1383
+ CREATE INDEX "knowledge_share_records_entityType_canonicalId_idx" ON "knowledge_share_records"("entityType", "canonicalId");
1384
+
1385
+ -- CreateIndex
1386
+ CREATE UNIQUE INDEX "knowledge_share_records_entityType_canonicalId_userId_key" ON "knowledge_share_records"("entityType", "canonicalId", "userId");
1387
+
1388
+ -- CreateIndex
1389
+ CREATE INDEX "article_favorites_userId_entityType_idx" ON "article_favorites"("userId", "entityType");
1390
+
1391
+ -- CreateIndex
1392
+ CREATE UNIQUE INDEX "article_favorites_entityType_entityId_userId_key" ON "article_favorites"("entityType", "entityId", "userId");
1393
+
1394
+ -- CreateIndex
1395
+ CREATE INDEX "stories_projectId_sequenceId_idx" ON "stories"("projectId", "sequenceId");
1396
+
1397
+ -- CreateIndex
1398
+ CREATE INDEX "stories_state_idx" ON "stories"("state");
1399
+
1400
+ -- CreateIndex
1401
+ CREATE INDEX "stories_assigneeId_idx" ON "stories"("assigneeId");
1402
+
1403
+ -- CreateIndex
1404
+ CREATE INDEX "stories_createdById_idx" ON "stories"("createdById");
1405
+
1406
+ -- CreateIndex
1407
+ CREATE UNIQUE INDEX "stories_identifier_key" ON "stories"("identifier");
1408
+
1409
+ -- CreateIndex
1410
+ CREATE UNIQUE INDEX "labels_name_key" ON "labels"("name");
1411
+
1412
+ -- CreateIndex
1413
+ CREATE INDEX "story_labels_labelId_idx" ON "story_labels"("labelId");
1414
+
1415
+ -- CreateIndex
1416
+ CREATE INDEX "story_activities_storyId_createdAt_idx" ON "story_activities"("storyId", "createdAt");
1417
+
1418
+ -- CreateIndex
1419
+ CREATE UNIQUE INDEX "sequence_counters_scope_key" ON "sequence_counters"("scope");
1420
+
1421
+ -- CreateIndex
1422
+ CREATE INDEX "story_comments_storyId_createdAt_idx" ON "story_comments"("storyId", "createdAt");
1423
+
1424
+ -- CreateIndex
1425
+ CREATE INDEX "story_comments_parentId_idx" ON "story_comments"("parentId");
1426
+
1427
+ -- CreateIndex
1428
+ CREATE INDEX "story_reactions_storyId_idx" ON "story_reactions"("storyId");
1429
+
1430
+ -- CreateIndex
1431
+ CREATE UNIQUE INDEX "story_reactions_storyId_userId_emoji_key" ON "story_reactions"("storyId", "userId", "emoji");
1432
+
1433
+ -- CreateIndex
1434
+ CREATE INDEX "comment_reactions_commentId_idx" ON "comment_reactions"("commentId");
1435
+
1436
+ -- CreateIndex
1437
+ CREATE UNIQUE INDEX "comment_reactions_commentId_userId_emoji_key" ON "comment_reactions"("commentId", "userId", "emoji");
1438
+
1439
+ -- CreateIndex
1440
+ CREATE INDEX "story_dependencies_sourceId_idx" ON "story_dependencies"("sourceId");
1441
+
1442
+ -- CreateIndex
1443
+ CREATE INDEX "story_dependencies_targetId_idx" ON "story_dependencies"("targetId");
1444
+
1445
+ -- CreateIndex
1446
+ CREATE UNIQUE INDEX "story_dependencies_sourceId_targetId_type_key" ON "story_dependencies"("sourceId", "targetId", "type");
1447
+
1448
+ -- CreateIndex
1449
+ CREATE INDEX "story_links_storyId_idx" ON "story_links"("storyId");
1450
+
1451
+ -- CreateIndex
1452
+ CREATE INDEX "story_attachments_storyId_idx" ON "story_attachments"("storyId");
1453
+
1454
+ -- CreateIndex
1455
+ CREATE INDEX "story_prd_links_storyId_idx" ON "story_prd_links"("storyId");
1456
+
1457
+ -- CreateIndex
1458
+ CREATE INDEX "story_prd_links_prdId_idx" ON "story_prd_links"("prdId");
1459
+
1460
+ -- CreateIndex
1461
+ CREATE UNIQUE INDEX "story_prd_links_storyId_prdId_key" ON "story_prd_links"("storyId", "prdId");
1462
+
1463
+ -- CreateIndex
1464
+ CREATE INDEX "story_doc_links_storyId_idx" ON "story_doc_links"("storyId");
1465
+
1466
+ -- CreateIndex
1467
+ CREATE INDEX "story_doc_links_docId_idx" ON "story_doc_links"("docId");
1468
+
1469
+ -- CreateIndex
1470
+ CREATE UNIQUE INDEX "story_doc_links_storyId_docId_key" ON "story_doc_links"("storyId", "docId");
1471
+
1472
+ -- CreateIndex
1473
+ CREATE INDEX "story_filter_views_userId_idx" ON "story_filter_views"("userId");
1474
+
1475
+ -- AddForeignKey
1476
+ ALTER TABLE "accounts" ADD CONSTRAINT "accounts_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1477
+
1478
+ -- AddForeignKey
1479
+ ALTER TABLE "projects" ADD CONSTRAINT "projects_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1480
+
1481
+ -- AddForeignKey
1482
+ ALTER TABLE "project_members" ADD CONSTRAINT "project_members_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "projects"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1483
+
1484
+ -- AddForeignKey
1485
+ ALTER TABLE "project_members" ADD CONSTRAINT "project_members_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1486
+
1487
+ -- AddForeignKey
1488
+ ALTER TABLE "project_activities" ADD CONSTRAINT "project_activities_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "projects"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1489
+
1490
+ -- AddForeignKey
1491
+ ALTER TABLE "project_activities" ADD CONSTRAINT "project_activities_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1492
+
1493
+ -- AddForeignKey
1494
+ ALTER TABLE "conversations" ADD CONSTRAINT "conversations_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1495
+
1496
+ -- AddForeignKey
1497
+ ALTER TABLE "messages" ADD CONSTRAINT "messages_conversationId_fkey" FOREIGN KEY ("conversationId") REFERENCES "conversations"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1498
+
1499
+ -- AddForeignKey
1500
+ ALTER TABLE "login_logs" ADD CONSTRAINT "login_logs_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1501
+
1502
+ -- AddForeignKey
1503
+ ALTER TABLE "invitation_uses" ADD CONSTRAINT "invitation_uses_codeId_fkey" FOREIGN KEY ("codeId") REFERENCES "invitation_codes"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1504
+
1505
+ -- AddForeignKey
1506
+ ALTER TABLE "invitation_uses" ADD CONSTRAINT "invitation_uses_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1507
+
1508
+ -- AddForeignKey
1509
+ ALTER TABLE "password_reset_tokens" ADD CONSTRAINT "password_reset_tokens_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1510
+
1511
+ -- AddForeignKey
1512
+ ALTER TABLE "knowledge_bases" ADD CONSTRAINT "knowledge_bases_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1513
+
1514
+ -- AddForeignKey
1515
+ ALTER TABLE "knowledge_documents" ADD CONSTRAINT "knowledge_documents_kbId_fkey" FOREIGN KEY ("kbId") REFERENCES "knowledge_bases"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1516
+
1517
+ -- AddForeignKey
1518
+ ALTER TABLE "knowledge_documents" ADD CONSTRAINT "knowledge_documents_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "knowledge_documents"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1519
+
1520
+ -- AddForeignKey
1521
+ ALTER TABLE "knowledge_documents" ADD CONSTRAINT "knowledge_documents_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1522
+
1523
+ -- AddForeignKey
1524
+ ALTER TABLE "prds" ADD CONSTRAINT "prds_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1525
+
1526
+ -- AddForeignKey
1527
+ ALTER TABLE "agent_conversations" ADD CONSTRAINT "agent_conversations_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1528
+
1529
+ -- AddForeignKey
1530
+ ALTER TABLE "agent_conversations" ADD CONSTRAINT "agent_conversations_prdId_fkey" FOREIGN KEY ("prdId") REFERENCES "prds"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1531
+
1532
+ -- AddForeignKey
1533
+ ALTER TABLE "agent_messages" ADD CONSTRAINT "agent_messages_conversationId_fkey" FOREIGN KEY ("conversationId") REFERENCES "agent_conversations"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1534
+
1535
+ -- AddForeignKey
1536
+ ALTER TABLE "block_components" ADD CONSTRAINT "block_components_blockId_fkey" FOREIGN KEY ("blockId") REFERENCES "blocks"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1537
+
1538
+ -- AddForeignKey
1539
+ ALTER TABLE "block_components" ADD CONSTRAINT "block_components_componentId_fkey" FOREIGN KEY ("componentId") REFERENCES "components"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1540
+
1541
+ -- AddForeignKey
1542
+ ALTER TABLE "template_blocks" ADD CONSTRAINT "template_blocks_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "templates"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1543
+
1544
+ -- AddForeignKey
1545
+ ALTER TABLE "template_blocks" ADD CONSTRAINT "template_blocks_blockId_fkey" FOREIGN KEY ("blockId") REFERENCES "blocks"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1546
+
1547
+ -- AddForeignKey
1548
+ ALTER TABLE "prd_pages" ADD CONSTRAINT "prd_pages_prdId_fkey" FOREIGN KEY ("prdId") REFERENCES "prds"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1549
+
1550
+ -- AddForeignKey
1551
+ ALTER TABLE "prd_pages" ADD CONSTRAINT "prd_pages_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "prd_pages"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1552
+
1553
+ -- AddForeignKey
1554
+ ALTER TABLE "component_instances" ADD CONSTRAINT "component_instances_pageId_fkey" FOREIGN KEY ("pageId") REFERENCES "prd_pages"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1555
+
1556
+ -- AddForeignKey
1557
+ ALTER TABLE "component_instances" ADD CONSTRAINT "component_instances_componentId_fkey" FOREIGN KEY ("componentId") REFERENCES "components"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1558
+
1559
+ -- AddForeignKey
1560
+ ALTER TABLE "component_instances" ADD CONSTRAINT "component_instances_blockInstanceId_fkey" FOREIGN KEY ("blockInstanceId") REFERENCES "block_instances"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1561
+
1562
+ -- AddForeignKey
1563
+ ALTER TABLE "block_instances" ADD CONSTRAINT "block_instances_pageId_fkey" FOREIGN KEY ("pageId") REFERENCES "prd_pages"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1564
+
1565
+ -- AddForeignKey
1566
+ ALTER TABLE "block_instances" ADD CONSTRAINT "block_instances_blockId_fkey" FOREIGN KEY ("blockId") REFERENCES "blocks"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1567
+
1568
+ -- AddForeignKey
1569
+ ALTER TABLE "prd_versions" ADD CONSTRAINT "prd_versions_prdId_fkey" FOREIGN KEY ("prdId") REFERENCES "prds"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1570
+
1571
+ -- AddForeignKey
1572
+ ALTER TABLE "prd_versions" ADD CONSTRAINT "prd_versions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1573
+
1574
+ -- AddForeignKey
1575
+ ALTER TABLE "page_versions" ADD CONSTRAINT "page_versions_pageId_fkey" FOREIGN KEY ("pageId") REFERENCES "prd_pages"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1576
+
1577
+ -- AddForeignKey
1578
+ ALTER TABLE "reviews" ADD CONSTRAINT "reviews_prdId_fkey" FOREIGN KEY ("prdId") REFERENCES "prds"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1579
+
1580
+ -- AddForeignKey
1581
+ ALTER TABLE "reviews" ADD CONSTRAINT "reviews_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "prd_versions"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1582
+
1583
+ -- AddForeignKey
1584
+ ALTER TABLE "reviews" ADD CONSTRAINT "reviews_reviewerId_fkey" FOREIGN KEY ("reviewerId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1585
+
1586
+ -- AddForeignKey
1587
+ ALTER TABLE "review_comments" ADD CONSTRAINT "review_comments_reviewId_fkey" FOREIGN KEY ("reviewId") REFERENCES "reviews"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1588
+
1589
+ -- AddForeignKey
1590
+ ALTER TABLE "review_comments" ADD CONSTRAINT "review_comments_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1591
+
1592
+ -- AddForeignKey
1593
+ ALTER TABLE "review_comments" ADD CONSTRAINT "review_comments_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "review_comments"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1594
+
1595
+ -- AddForeignKey
1596
+ ALTER TABLE "comments" ADD CONSTRAINT "comments_prdId_fkey" FOREIGN KEY ("prdId") REFERENCES "prds"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1597
+
1598
+ -- AddForeignKey
1599
+ ALTER TABLE "comments" ADD CONSTRAINT "comments_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1600
+
1601
+ -- AddForeignKey
1602
+ ALTER TABLE "comments" ADD CONSTRAINT "comments_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "comments"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1603
+
1604
+ -- AddForeignKey
1605
+ ALTER TABLE "comment_ignores" ADD CONSTRAINT "comment_ignores_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1606
+
1607
+ -- AddForeignKey
1608
+ ALTER TABLE "comment_ignores" ADD CONSTRAINT "comment_ignores_commentId_fkey" FOREIGN KEY ("commentId") REFERENCES "comments"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1609
+
1610
+ -- AddForeignKey
1611
+ ALTER TABLE "shares" ADD CONSTRAINT "shares_prdId_fkey" FOREIGN KEY ("prdId") REFERENCES "prds"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1612
+
1613
+ -- AddForeignKey
1614
+ ALTER TABLE "tags" ADD CONSTRAINT "tags_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1615
+
1616
+ -- AddForeignKey
1617
+ ALTER TABLE "prd_tags" ADD CONSTRAINT "prd_tags_prdId_fkey" FOREIGN KEY ("prdId") REFERENCES "prds"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1618
+
1619
+ -- AddForeignKey
1620
+ ALTER TABLE "prd_tags" ADD CONSTRAINT "prd_tags_tagId_fkey" FOREIGN KEY ("tagId") REFERENCES "tags"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1621
+
1622
+ -- AddForeignKey
1623
+ ALTER TABLE "component_tags" ADD CONSTRAINT "component_tags_componentId_fkey" FOREIGN KEY ("componentId") REFERENCES "components"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1624
+
1625
+ -- AddForeignKey
1626
+ ALTER TABLE "share_versions" ADD CONSTRAINT "share_versions_shareId_fkey" FOREIGN KEY ("shareId") REFERENCES "shares"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1627
+
1628
+ -- AddForeignKey
1629
+ ALTER TABLE "share_versions" ADD CONSTRAINT "share_versions_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "prd_versions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1630
+
1631
+ -- AddForeignKey
1632
+ ALTER TABLE "AnyHubApp" ADD CONSTRAINT "AnyHubApp_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1633
+
1634
+ -- AddForeignKey
1635
+ ALTER TABLE "AnyHubPermission" ADD CONSTRAINT "AnyHubPermission_appId_fkey" FOREIGN KEY ("appId") REFERENCES "AnyHubApp"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1636
+
1637
+ -- AddForeignKey
1638
+ ALTER TABLE "AnyHubMarketApp" ADD CONSTRAINT "AnyHubMarketApp_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1639
+
1640
+ -- AddForeignKey
1641
+ ALTER TABLE "AnyHubMarketApp" ADD CONSTRAINT "AnyHubMarketApp_recommendationId_fkey" FOREIGN KEY ("recommendationId") REFERENCES "AnyHubRecommendation"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1642
+
1643
+ -- AddForeignKey
1644
+ ALTER TABLE "AnyHubRecommendation" ADD CONSTRAINT "AnyHubRecommendation_reviewedBy_fkey" FOREIGN KEY ("reviewedBy") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1645
+
1646
+ -- AddForeignKey
1647
+ ALTER TABLE "AnyHubRecommender" ADD CONSTRAINT "AnyHubRecommender_recommendationId_fkey" FOREIGN KEY ("recommendationId") REFERENCES "AnyHubRecommendation"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1648
+
1649
+ -- AddForeignKey
1650
+ ALTER TABLE "AnyHubRecommender" ADD CONSTRAINT "AnyHubRecommender_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1651
+
1652
+ -- AddForeignKey
1653
+ ALTER TABLE "design_projects" ADD CONSTRAINT "design_projects_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1654
+
1655
+ -- AddForeignKey
1656
+ ALTER TABLE "design_artboards" ADD CONSTRAINT "design_artboards_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "design_projects"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1657
+
1658
+ -- AddForeignKey
1659
+ ALTER TABLE "design_artboard_exports" ADD CONSTRAINT "design_artboard_exports_artboardId_fkey" FOREIGN KEY ("artboardId") REFERENCES "design_artboards"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1660
+
1661
+ -- AddForeignKey
1662
+ ALTER TABLE "ai_provider_configs" ADD CONSTRAINT "ai_provider_configs_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1663
+
1664
+ -- AddForeignKey
1665
+ ALTER TABLE "legal_regulations" ADD CONSTRAINT "legal_regulations_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1666
+
1667
+ -- AddForeignKey
1668
+ ALTER TABLE "industry_compliances" ADD CONSTRAINT "industry_compliances_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1669
+
1670
+ -- AddForeignKey
1671
+ ALTER TABLE "dictionary_terms" ADD CONSTRAINT "dictionary_terms_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1672
+
1673
+ -- AddForeignKey
1674
+ ALTER TABLE "website_bookmarks" ADD CONSTRAINT "website_bookmarks_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1675
+
1676
+ -- AddForeignKey
1677
+ ALTER TABLE "website_bookmarks" ADD CONSTRAINT "website_bookmarks_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "bookmark_categories"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1678
+
1679
+ -- AddForeignKey
1680
+ ALTER TABLE "bookmark_categories" ADD CONSTRAINT "bookmark_categories_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1681
+
1682
+ -- AddForeignKey
1683
+ ALTER TABLE "knowledge_share_records" ADD CONSTRAINT "knowledge_share_records_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1684
+
1685
+ -- AddForeignKey
1686
+ ALTER TABLE "article_favorites" ADD CONSTRAINT "article_favorites_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1687
+
1688
+ -- AddForeignKey
1689
+ ALTER TABLE "stories" ADD CONSTRAINT "stories_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "projects"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1690
+
1691
+ -- AddForeignKey
1692
+ ALTER TABLE "stories" ADD CONSTRAINT "stories_assigneeId_fkey" FOREIGN KEY ("assigneeId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1693
+
1694
+ -- AddForeignKey
1695
+ ALTER TABLE "stories" ADD CONSTRAINT "stories_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1696
+
1697
+ -- AddForeignKey
1698
+ ALTER TABLE "stories" ADD CONSTRAINT "stories_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1699
+
1700
+ -- AddForeignKey
1701
+ ALTER TABLE "stories" ADD CONSTRAINT "stories_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "stories"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1702
+
1703
+ -- AddForeignKey
1704
+ ALTER TABLE "labels" ADD CONSTRAINT "labels_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1705
+
1706
+ -- AddForeignKey
1707
+ ALTER TABLE "story_labels" ADD CONSTRAINT "story_labels_storyId_fkey" FOREIGN KEY ("storyId") REFERENCES "stories"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1708
+
1709
+ -- AddForeignKey
1710
+ ALTER TABLE "story_labels" ADD CONSTRAINT "story_labels_labelId_fkey" FOREIGN KEY ("labelId") REFERENCES "labels"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1711
+
1712
+ -- AddForeignKey
1713
+ ALTER TABLE "story_activities" ADD CONSTRAINT "story_activities_storyId_fkey" FOREIGN KEY ("storyId") REFERENCES "stories"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1714
+
1715
+ -- AddForeignKey
1716
+ ALTER TABLE "story_activities" ADD CONSTRAINT "story_activities_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1717
+
1718
+ -- AddForeignKey
1719
+ ALTER TABLE "story_comments" ADD CONSTRAINT "story_comments_storyId_fkey" FOREIGN KEY ("storyId") REFERENCES "stories"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1720
+
1721
+ -- AddForeignKey
1722
+ ALTER TABLE "story_comments" ADD CONSTRAINT "story_comments_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1723
+
1724
+ -- AddForeignKey
1725
+ ALTER TABLE "story_comments" ADD CONSTRAINT "story_comments_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "story_comments"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1726
+
1727
+ -- AddForeignKey
1728
+ ALTER TABLE "story_reactions" ADD CONSTRAINT "story_reactions_storyId_fkey" FOREIGN KEY ("storyId") REFERENCES "stories"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1729
+
1730
+ -- AddForeignKey
1731
+ ALTER TABLE "story_reactions" ADD CONSTRAINT "story_reactions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1732
+
1733
+ -- AddForeignKey
1734
+ ALTER TABLE "comment_reactions" ADD CONSTRAINT "comment_reactions_commentId_fkey" FOREIGN KEY ("commentId") REFERENCES "story_comments"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1735
+
1736
+ -- AddForeignKey
1737
+ ALTER TABLE "comment_reactions" ADD CONSTRAINT "comment_reactions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
1738
+
1739
+ -- AddForeignKey
1740
+ ALTER TABLE "story_dependencies" ADD CONSTRAINT "story_dependencies_sourceId_fkey" FOREIGN KEY ("sourceId") REFERENCES "stories"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1741
+
1742
+ -- AddForeignKey
1743
+ ALTER TABLE "story_dependencies" ADD CONSTRAINT "story_dependencies_targetId_fkey" FOREIGN KEY ("targetId") REFERENCES "stories"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1744
+
1745
+ -- AddForeignKey
1746
+ ALTER TABLE "story_links" ADD CONSTRAINT "story_links_storyId_fkey" FOREIGN KEY ("storyId") REFERENCES "stories"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1747
+
1748
+ -- AddForeignKey
1749
+ ALTER TABLE "story_attachments" ADD CONSTRAINT "story_attachments_storyId_fkey" FOREIGN KEY ("storyId") REFERENCES "stories"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1750
+
1751
+ -- AddForeignKey
1752
+ ALTER TABLE "story_prd_links" ADD CONSTRAINT "story_prd_links_storyId_fkey" FOREIGN KEY ("storyId") REFERENCES "stories"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1753
+
1754
+ -- AddForeignKey
1755
+ ALTER TABLE "story_prd_links" ADD CONSTRAINT "story_prd_links_prdId_fkey" FOREIGN KEY ("prdId") REFERENCES "prds"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1756
+
1757
+ -- AddForeignKey
1758
+ ALTER TABLE "story_doc_links" ADD CONSTRAINT "story_doc_links_storyId_fkey" FOREIGN KEY ("storyId") REFERENCES "stories"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1759
+
1760
+ -- AddForeignKey
1761
+ ALTER TABLE "story_doc_links" ADD CONSTRAINT "story_doc_links_docId_fkey" FOREIGN KEY ("docId") REFERENCES "knowledge_documents"("id") ON DELETE CASCADE ON UPDATE CASCADE;
1762
+
1763
+ -- AddForeignKey
1764
+ ALTER TABLE "story_filter_views" ADD CONSTRAINT "story_filter_views_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;