@actuate-media/cms-core 0.12.0 → 0.14.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 (110) hide show
  1. package/LICENSE +21 -21
  2. package/dist/__tests__/api/api-key-auth.test.d.ts +2 -0
  3. package/dist/__tests__/api/api-key-auth.test.d.ts.map +1 -0
  4. package/dist/__tests__/api/api-key-auth.test.js +217 -0
  5. package/dist/__tests__/api/api-key-auth.test.js.map +1 -0
  6. package/dist/__tests__/api/health.test.d.ts +2 -0
  7. package/dist/__tests__/api/health.test.d.ts.map +1 -0
  8. package/dist/__tests__/api/health.test.js +140 -0
  9. package/dist/__tests__/api/health.test.js.map +1 -0
  10. package/dist/__tests__/auth/oauth.test.d.ts +2 -0
  11. package/dist/__tests__/auth/oauth.test.d.ts.map +1 -0
  12. package/dist/__tests__/auth/oauth.test.js +406 -0
  13. package/dist/__tests__/auth/oauth.test.js.map +1 -0
  14. package/dist/__tests__/auth/reset.test.d.ts +2 -0
  15. package/dist/__tests__/auth/reset.test.d.ts.map +1 -0
  16. package/dist/__tests__/auth/reset.test.js +303 -0
  17. package/dist/__tests__/auth/reset.test.js.map +1 -0
  18. package/dist/__tests__/diagnostics/env.test.d.ts +2 -0
  19. package/dist/__tests__/diagnostics/env.test.d.ts.map +1 -0
  20. package/dist/__tests__/diagnostics/env.test.js +119 -0
  21. package/dist/__tests__/diagnostics/env.test.js.map +1 -0
  22. package/dist/__tests__/diagnostics/logger.test.d.ts +2 -0
  23. package/dist/__tests__/diagnostics/logger.test.d.ts.map +1 -0
  24. package/dist/__tests__/diagnostics/logger.test.js +111 -0
  25. package/dist/__tests__/diagnostics/logger.test.js.map +1 -0
  26. package/dist/__tests__/security/api-key-enhanced.test.d.ts +2 -0
  27. package/dist/__tests__/security/api-key-enhanced.test.d.ts.map +1 -0
  28. package/dist/__tests__/security/api-key-enhanced.test.js +110 -0
  29. package/dist/__tests__/security/api-key-enhanced.test.js.map +1 -0
  30. package/dist/__tests__/security/rate-limit.test.js +42 -0
  31. package/dist/__tests__/security/rate-limit.test.js.map +1 -1
  32. package/dist/actions.d.ts.map +1 -1
  33. package/dist/actions.js +7 -6
  34. package/dist/actions.js.map +1 -1
  35. package/dist/api/handler-factory.d.ts.map +1 -1
  36. package/dist/api/handler-factory.js +31 -8
  37. package/dist/api/handler-factory.js.map +1 -1
  38. package/dist/api/handlers.d.ts.map +1 -1
  39. package/dist/api/handlers.js +508 -55
  40. package/dist/api/handlers.js.map +1 -1
  41. package/dist/auth/oauth.d.ts.map +1 -1
  42. package/dist/auth/oauth.js +5 -1
  43. package/dist/auth/oauth.js.map +1 -1
  44. package/dist/auth/reset.d.ts.map +1 -1
  45. package/dist/auth/reset.js +2 -1
  46. package/dist/auth/reset.js.map +1 -1
  47. package/dist/config/runtime.d.ts +99 -0
  48. package/dist/config/runtime.d.ts.map +1 -0
  49. package/dist/config/runtime.js +43 -0
  50. package/dist/config/runtime.js.map +1 -0
  51. package/dist/config/types.d.ts +21 -0
  52. package/dist/config/types.d.ts.map +1 -1
  53. package/dist/diagnostics/env.d.ts +44 -0
  54. package/dist/diagnostics/env.d.ts.map +1 -0
  55. package/dist/diagnostics/env.js +293 -0
  56. package/dist/diagnostics/env.js.map +1 -0
  57. package/dist/diagnostics/logger.d.ts +38 -0
  58. package/dist/diagnostics/logger.d.ts.map +1 -0
  59. package/dist/diagnostics/logger.js +89 -0
  60. package/dist/diagnostics/logger.js.map +1 -0
  61. package/dist/page-builder/blocks.d.ts.map +1 -1
  62. package/dist/page-builder/blocks.js +6 -1
  63. package/dist/page-builder/blocks.js.map +1 -1
  64. package/dist/security/api-key-enhanced.d.ts +48 -5
  65. package/dist/security/api-key-enhanced.d.ts.map +1 -1
  66. package/dist/security/api-key-enhanced.js +60 -9
  67. package/dist/security/api-key-enhanced.js.map +1 -1
  68. package/dist/security/audit.d.ts.map +1 -1
  69. package/dist/security/audit.js +3 -1
  70. package/dist/security/audit.js.map +1 -1
  71. package/dist/security/rate-limit.d.ts +8 -0
  72. package/dist/security/rate-limit.d.ts.map +1 -1
  73. package/dist/security/rate-limit.js +81 -3
  74. package/dist/security/rate-limit.js.map +1 -1
  75. package/generated/browser.ts +109 -0
  76. package/generated/client.ts +133 -0
  77. package/generated/commonInputTypes.ts +709 -0
  78. package/generated/enums.ts +125 -0
  79. package/generated/internal/class.ts +376 -0
  80. package/generated/internal/prismaNamespace.ts +2617 -0
  81. package/generated/internal/prismaNamespaceBrowser.ts +611 -0
  82. package/generated/models/ApiKey.ts +1550 -0
  83. package/generated/models/AuditLog.ts +1206 -0
  84. package/generated/models/BackupRecord.ts +1250 -0
  85. package/generated/models/ContentLock.ts +1472 -0
  86. package/generated/models/ContentTemplate.ts +1416 -0
  87. package/generated/models/Document.ts +3005 -0
  88. package/generated/models/Folder.ts +1904 -0
  89. package/generated/models/FormSubmission.ts +1200 -0
  90. package/generated/models/InAppNotification.ts +1457 -0
  91. package/generated/models/Media.ts +2340 -0
  92. package/generated/models/MediaUsage.ts +1472 -0
  93. package/generated/models/OAuthAccount.ts +1463 -0
  94. package/generated/models/Redirect.ts +1284 -0
  95. package/generated/models/Session.ts +1492 -0
  96. package/generated/models/Site.ts +1206 -0
  97. package/generated/models/User.ts +3513 -0
  98. package/generated/models/Version.ts +1511 -0
  99. package/generated/models/WorkflowState.ts +1514 -0
  100. package/generated/models.ts +29 -0
  101. package/package.json +1 -1
  102. package/prisma/cms-schema.prisma +306 -306
  103. package/prisma/migrations/0001_init/migration.sql +384 -384
  104. package/prisma/migrations/0002_folders/migration.sql +39 -39
  105. package/prisma/migrations/0003_search_and_webhooks/migration.sql +50 -50
  106. package/prisma/migrations/0004_script_tags/migration.sql +21 -21
  107. package/prisma/migrations/0005_password_reset_tokens/migration.sql +20 -20
  108. package/prisma/migrations/0006_page_builder/migration.sql +38 -38
  109. package/prisma/migrations/migration_lock.toml +3 -3
  110. package/prisma/schema.prisma +549 -549
@@ -1,384 +1,384 @@
1
- -- CreateSchema
2
- CREATE SCHEMA IF NOT EXISTS "public";
3
-
4
- -- CreateEnum
5
- CREATE TYPE "DocumentStatus" AS ENUM ('DRAFT', 'PUBLISHED', 'ARCHIVED', 'SCHEDULED', 'SCHEDULED_UNPUBLISH');
6
-
7
- -- CreateEnum
8
- CREATE TYPE "UserRole" AS ENUM ('ADMIN', 'EDITOR', 'AUTHOR', 'CLIENT');
9
-
10
- -- CreateEnum
11
- CREATE TYPE "ChangeType" AS ENUM ('CREATE', 'UPDATE', 'PUBLISH', 'RESTORE');
12
-
13
- -- CreateEnum
14
- CREATE TYPE "AuditEvent" AS ENUM ('login_success', 'login_failed', 'logout', 'password_change', 'password_reset_request', 'password_reset_complete', 'totp_enabled', 'totp_disabled', 'api_key_created', 'api_key_revoked', 'document_created', 'document_updated', 'document_published', 'document_deleted', 'media_uploaded', 'media_deleted', 'user_created', 'user_updated', 'user_deactivated', 'settings_changed', 'export_requested', 'import_completed');
15
-
16
- -- CreateEnum
17
- CREATE TYPE "NotificationType" AS ENUM ('DOCUMENT_PUBLISHED', 'DOCUMENT_ASSIGNED', 'REVIEW_REQUESTED', 'REVIEW_APPROVED', 'COMMENT_ADDED', 'SYSTEM_ALERT', 'WORKFLOW_STEP');
18
-
19
- -- CreateEnum
20
- CREATE TYPE "OrderStatus" AS ENUM ('PENDING', 'CONFIRMED', 'PROCESSING', 'SHIPPED', 'DELIVERED', 'CANCELLED', 'REFUNDED');
21
-
22
- -- CreateEnum
23
- CREATE TYPE "PaymentStatus" AS ENUM ('PENDING', 'AUTHORIZED', 'CAPTURED', 'FAILED', 'REFUNDED', 'PARTIALLY_REFUNDED');
24
-
25
- -- CreateEnum
26
- CREATE TYPE "DiscountType" AS ENUM ('PERCENTAGE', 'FIXED_AMOUNT', 'FREE_SHIPPING');
27
-
28
- -- CreateEnum
29
- CREATE TYPE "ProductType" AS ENUM ('PHYSICAL', 'DIGITAL', 'SUBSCRIPTION', 'BUNDLE');
30
-
31
- -- CreateTable
32
- CREATE TABLE "actuate_users" (
33
- "id" TEXT NOT NULL,
34
- "email" TEXT NOT NULL,
35
- "name" TEXT NOT NULL,
36
- "avatarUrl" TEXT,
37
- "role" "UserRole" NOT NULL DEFAULT 'AUTHOR',
38
- "passwordHash" TEXT,
39
- "totpSecret" TEXT,
40
- "authProvider" TEXT,
41
- "isActive" BOOLEAN NOT NULL DEFAULT true,
42
- "isApproved" BOOLEAN NOT NULL DEFAULT false,
43
- "emailVerified" BOOLEAN NOT NULL DEFAULT false,
44
- "lastLoginAt" TIMESTAMP(3),
45
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
46
- "updatedAt" TIMESTAMP(3) NOT NULL,
47
-
48
- CONSTRAINT "actuate_users_pkey" PRIMARY KEY ("id")
49
- );
50
-
51
- -- CreateTable
52
- CREATE TABLE "actuate_oauth_accounts" (
53
- "id" TEXT NOT NULL,
54
- "userId" TEXT NOT NULL,
55
- "provider" TEXT NOT NULL,
56
- "providerAccountId" TEXT NOT NULL,
57
- "accessToken" TEXT,
58
- "refreshToken" TEXT,
59
- "expiresAt" TIMESTAMP(3),
60
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
61
-
62
- CONSTRAINT "actuate_oauth_accounts_pkey" PRIMARY KEY ("id")
63
- );
64
-
65
- -- CreateTable
66
- CREATE TABLE "actuate_sessions" (
67
- "id" TEXT NOT NULL,
68
- "userId" TEXT NOT NULL,
69
- "token" TEXT NOT NULL,
70
- "expiresAt" TIMESTAMP(3) NOT NULL,
71
- "revokedAt" TIMESTAMP(3),
72
- "ipAddress" TEXT,
73
- "userAgent" TEXT,
74
- "fingerprintHash" TEXT,
75
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
76
-
77
- CONSTRAINT "actuate_sessions_pkey" PRIMARY KEY ("id")
78
- );
79
-
80
- -- CreateTable
81
- CREATE TABLE "actuate_api_keys" (
82
- "id" TEXT NOT NULL,
83
- "name" TEXT NOT NULL,
84
- "keyHash" TEXT NOT NULL,
85
- "keyPrefix" TEXT NOT NULL,
86
- "userId" TEXT NOT NULL,
87
- "scopes" JSONB NOT NULL,
88
- "ipRestrictions" JSONB,
89
- "expiresAt" TIMESTAMP(3),
90
- "lastUsedAt" TIMESTAMP(3),
91
- "revokedAt" TIMESTAMP(3),
92
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
93
-
94
- CONSTRAINT "actuate_api_keys_pkey" PRIMARY KEY ("id")
95
- );
96
-
97
- -- CreateTable
98
- CREATE TABLE "actuate_audit_logs" (
99
- "id" TEXT NOT NULL,
100
- "event" TEXT NOT NULL,
101
- "userId" TEXT,
102
- "ipAddress" TEXT,
103
- "userAgent" TEXT,
104
- "details" JSONB,
105
- "timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
106
-
107
- CONSTRAINT "actuate_audit_logs_pkey" PRIMARY KEY ("id")
108
- );
109
-
110
- -- CreateTable
111
- CREATE TABLE "actuate_documents" (
112
- "id" TEXT NOT NULL,
113
- "collection" TEXT NOT NULL,
114
- "data" JSONB NOT NULL,
115
- "status" "DocumentStatus" NOT NULL DEFAULT 'DRAFT',
116
- "locale" TEXT,
117
- "localeGroupId" TEXT,
118
- "createdById" TEXT NOT NULL,
119
- "updatedById" TEXT NOT NULL,
120
- "publishedAt" TIMESTAMP(3),
121
- "scheduledAt" TIMESTAMP(3),
122
- "scheduledUnpublishAt" TIMESTAMP(3),
123
- "deletedAt" TIMESTAMP(3),
124
- "searchVector" TEXT,
125
- "plainText" TEXT,
126
- "contentHash" TEXT,
127
- "structuredData" JSONB,
128
- "contentGraph" JSONB,
129
- "siteId" TEXT,
130
- "templateId" TEXT,
131
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
132
- "updatedAt" TIMESTAMP(3) NOT NULL,
133
-
134
- CONSTRAINT "actuate_documents_pkey" PRIMARY KEY ("id")
135
- );
136
-
137
- -- CreateTable
138
- CREATE TABLE "actuate_versions" (
139
- "id" TEXT NOT NULL,
140
- "documentId" TEXT NOT NULL,
141
- "data" JSONB NOT NULL,
142
- "changedById" TEXT NOT NULL,
143
- "changeType" "ChangeType" NOT NULL,
144
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
145
-
146
- CONSTRAINT "actuate_versions_pkey" PRIMARY KEY ("id")
147
- );
148
-
149
- -- CreateTable
150
- CREATE TABLE "actuate_media" (
151
- "id" TEXT NOT NULL,
152
- "filename" TEXT NOT NULL,
153
- "storageKey" TEXT NOT NULL,
154
- "mimeType" TEXT NOT NULL,
155
- "fileSize" INTEGER NOT NULL,
156
- "width" INTEGER,
157
- "height" INTEGER,
158
- "altText" TEXT,
159
- "title" TEXT,
160
- "uploadedById" TEXT NOT NULL,
161
- "focalPointX" DOUBLE PRECISION,
162
- "focalPointY" DOUBLE PRECISION,
163
- "blurHash" TEXT,
164
- "aiAltText" TEXT,
165
- "aiTags" JSONB,
166
- "aiDescription" TEXT,
167
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
168
- "updatedAt" TIMESTAMP(3) NOT NULL,
169
-
170
- CONSTRAINT "actuate_media_pkey" PRIMARY KEY ("id")
171
- );
172
-
173
- -- CreateTable
174
- CREATE TABLE "actuate_media_usages" (
175
- "id" TEXT NOT NULL,
176
- "mediaId" TEXT NOT NULL,
177
- "documentId" TEXT NOT NULL,
178
- "fieldName" TEXT NOT NULL,
179
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
180
-
181
- CONSTRAINT "actuate_media_usages_pkey" PRIMARY KEY ("id")
182
- );
183
-
184
- -- CreateTable
185
- CREATE TABLE "actuate_content_locks" (
186
- "id" TEXT NOT NULL,
187
- "documentId" TEXT NOT NULL,
188
- "userId" TEXT NOT NULL,
189
- "lockedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
190
- "expiresAt" TIMESTAMP(3) NOT NULL,
191
-
192
- CONSTRAINT "actuate_content_locks_pkey" PRIMARY KEY ("id")
193
- );
194
-
195
- -- CreateTable
196
- CREATE TABLE "actuate_notifications" (
197
- "id" TEXT NOT NULL,
198
- "userId" TEXT NOT NULL,
199
- "type" TEXT NOT NULL,
200
- "title" TEXT NOT NULL,
201
- "message" TEXT,
202
- "link" TEXT,
203
- "read" BOOLEAN NOT NULL DEFAULT false,
204
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
205
-
206
- CONSTRAINT "actuate_notifications_pkey" PRIMARY KEY ("id")
207
- );
208
-
209
- -- CreateTable
210
- CREATE TABLE "actuate_content_templates" (
211
- "id" TEXT NOT NULL,
212
- "name" TEXT NOT NULL,
213
- "collection" TEXT NOT NULL,
214
- "templateData" JSONB NOT NULL,
215
- "createdById" TEXT NOT NULL,
216
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
217
- "updatedAt" TIMESTAMP(3) NOT NULL,
218
-
219
- CONSTRAINT "actuate_content_templates_pkey" PRIMARY KEY ("id")
220
- );
221
-
222
- -- CreateTable
223
- CREATE TABLE "actuate_sites" (
224
- "id" TEXT NOT NULL,
225
- "domain" TEXT NOT NULL,
226
- "name" TEXT NOT NULL,
227
- "configOverrides" JSONB,
228
- "isDefault" BOOLEAN NOT NULL DEFAULT false,
229
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
230
- "updatedAt" TIMESTAMP(3) NOT NULL,
231
-
232
- CONSTRAINT "actuate_sites_pkey" PRIMARY KEY ("id")
233
- );
234
-
235
- -- CreateTable
236
- CREATE TABLE "actuate_workflow_states" (
237
- "id" TEXT NOT NULL,
238
- "documentId" TEXT NOT NULL,
239
- "currentStep" INTEGER NOT NULL DEFAULT 0,
240
- "assignedToId" TEXT,
241
- "status" TEXT NOT NULL DEFAULT 'pending',
242
- "definition" JSONB NOT NULL,
243
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
244
- "updatedAt" TIMESTAMP(3) NOT NULL,
245
-
246
- CONSTRAINT "actuate_workflow_states_pkey" PRIMARY KEY ("id")
247
- );
248
-
249
- -- CreateTable
250
- CREATE TABLE "actuate_redirects" (
251
- "id" TEXT NOT NULL,
252
- "source" TEXT NOT NULL,
253
- "destination" TEXT NOT NULL,
254
- "statusCode" INTEGER NOT NULL DEFAULT 301,
255
- "isRegex" BOOLEAN NOT NULL DEFAULT false,
256
- "notes" TEXT,
257
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
258
- "updatedAt" TIMESTAMP(3) NOT NULL,
259
-
260
- CONSTRAINT "actuate_redirects_pkey" PRIMARY KEY ("id")
261
- );
262
-
263
- -- CreateTable
264
- CREATE TABLE "actuate_form_submissions" (
265
- "id" TEXT NOT NULL,
266
- "formId" TEXT NOT NULL,
267
- "data" JSONB NOT NULL,
268
- "attribution" JSONB,
269
- "status" TEXT NOT NULL DEFAULT 'new',
270
- "submittedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
271
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
272
-
273
- CONSTRAINT "actuate_form_submissions_pkey" PRIMARY KEY ("id")
274
- );
275
-
276
- -- CreateTable
277
- CREATE TABLE "actuate_backup_records" (
278
- "id" TEXT NOT NULL,
279
- "filename" TEXT NOT NULL,
280
- "storageKey" TEXT NOT NULL,
281
- "sizeBytes" INTEGER NOT NULL,
282
- "type" TEXT NOT NULL,
283
- "metadata" JSONB,
284
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
285
-
286
- CONSTRAINT "actuate_backup_records_pkey" PRIMARY KEY ("id")
287
- );
288
-
289
- -- CreateIndex
290
- CREATE UNIQUE INDEX "actuate_users_email_key" ON "actuate_users"("email");
291
-
292
- -- CreateIndex
293
- CREATE UNIQUE INDEX "actuate_oauth_accounts_provider_providerAccountId_key" ON "actuate_oauth_accounts"("provider", "providerAccountId");
294
-
295
- -- CreateIndex
296
- CREATE UNIQUE INDEX "actuate_sessions_token_key" ON "actuate_sessions"("token");
297
-
298
- -- CreateIndex
299
- CREATE UNIQUE INDEX "actuate_api_keys_keyHash_key" ON "actuate_api_keys"("keyHash");
300
-
301
- -- CreateIndex
302
- CREATE INDEX "actuate_audit_logs_event_idx" ON "actuate_audit_logs"("event");
303
-
304
- -- CreateIndex
305
- CREATE INDEX "actuate_audit_logs_userId_idx" ON "actuate_audit_logs"("userId");
306
-
307
- -- CreateIndex
308
- CREATE INDEX "actuate_audit_logs_timestamp_idx" ON "actuate_audit_logs"("timestamp");
309
-
310
- -- CreateIndex
311
- CREATE INDEX "actuate_documents_collection_idx" ON "actuate_documents"("collection");
312
-
313
- -- CreateIndex
314
- CREATE INDEX "actuate_documents_status_idx" ON "actuate_documents"("status");
315
-
316
- -- CreateIndex
317
- CREATE INDEX "actuate_documents_deletedAt_idx" ON "actuate_documents"("deletedAt");
318
-
319
- -- CreateIndex
320
- CREATE INDEX "actuate_documents_publishedAt_idx" ON "actuate_documents"("publishedAt");
321
-
322
- -- CreateIndex
323
- CREATE UNIQUE INDEX "actuate_media_storageKey_key" ON "actuate_media"("storageKey");
324
-
325
- -- CreateIndex
326
- CREATE UNIQUE INDEX "actuate_sites_domain_key" ON "actuate_sites"("domain");
327
-
328
- -- CreateIndex
329
- CREATE UNIQUE INDEX "actuate_workflow_states_documentId_key" ON "actuate_workflow_states"("documentId");
330
-
331
- -- CreateIndex
332
- CREATE UNIQUE INDEX "actuate_redirects_source_key" ON "actuate_redirects"("source");
333
-
334
- -- CreateIndex
335
- CREATE INDEX "actuate_form_submissions_formId_idx" ON "actuate_form_submissions"("formId");
336
-
337
- -- CreateIndex
338
- CREATE INDEX "actuate_form_submissions_status_idx" ON "actuate_form_submissions"("status");
339
-
340
- -- AddForeignKey
341
- ALTER TABLE "actuate_oauth_accounts" ADD CONSTRAINT "actuate_oauth_accounts_userId_fkey" FOREIGN KEY ("userId") REFERENCES "actuate_users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
342
-
343
- -- AddForeignKey
344
- ALTER TABLE "actuate_sessions" ADD CONSTRAINT "actuate_sessions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "actuate_users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
345
-
346
- -- AddForeignKey
347
- ALTER TABLE "actuate_api_keys" ADD CONSTRAINT "actuate_api_keys_userId_fkey" FOREIGN KEY ("userId") REFERENCES "actuate_users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
348
-
349
- -- AddForeignKey
350
- ALTER TABLE "actuate_documents" ADD CONSTRAINT "actuate_documents_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "actuate_users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
351
-
352
- -- AddForeignKey
353
- ALTER TABLE "actuate_documents" ADD CONSTRAINT "actuate_documents_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES "actuate_users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
354
-
355
- -- AddForeignKey
356
- ALTER TABLE "actuate_versions" ADD CONSTRAINT "actuate_versions_documentId_fkey" FOREIGN KEY ("documentId") REFERENCES "actuate_documents"("id") ON DELETE CASCADE ON UPDATE CASCADE;
357
-
358
- -- AddForeignKey
359
- ALTER TABLE "actuate_versions" ADD CONSTRAINT "actuate_versions_changedById_fkey" FOREIGN KEY ("changedById") REFERENCES "actuate_users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
360
-
361
- -- AddForeignKey
362
- ALTER TABLE "actuate_media" ADD CONSTRAINT "actuate_media_uploadedById_fkey" FOREIGN KEY ("uploadedById") REFERENCES "actuate_users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
363
-
364
- -- AddForeignKey
365
- ALTER TABLE "actuate_media_usages" ADD CONSTRAINT "actuate_media_usages_mediaId_fkey" FOREIGN KEY ("mediaId") REFERENCES "actuate_media"("id") ON DELETE CASCADE ON UPDATE CASCADE;
366
-
367
- -- AddForeignKey
368
- ALTER TABLE "actuate_media_usages" ADD CONSTRAINT "actuate_media_usages_documentId_fkey" FOREIGN KEY ("documentId") REFERENCES "actuate_documents"("id") ON DELETE CASCADE ON UPDATE CASCADE;
369
-
370
- -- AddForeignKey
371
- ALTER TABLE "actuate_content_locks" ADD CONSTRAINT "actuate_content_locks_documentId_fkey" FOREIGN KEY ("documentId") REFERENCES "actuate_documents"("id") ON DELETE CASCADE ON UPDATE CASCADE;
372
-
373
- -- AddForeignKey
374
- ALTER TABLE "actuate_content_locks" ADD CONSTRAINT "actuate_content_locks_userId_fkey" FOREIGN KEY ("userId") REFERENCES "actuate_users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
375
-
376
- -- AddForeignKey
377
- ALTER TABLE "actuate_notifications" ADD CONSTRAINT "actuate_notifications_userId_fkey" FOREIGN KEY ("userId") REFERENCES "actuate_users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
378
-
379
- -- AddForeignKey
380
- ALTER TABLE "actuate_content_templates" ADD CONSTRAINT "actuate_content_templates_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "actuate_users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
381
-
382
- -- AddForeignKey
383
- ALTER TABLE "actuate_workflow_states" ADD CONSTRAINT "actuate_workflow_states_assignedToId_fkey" FOREIGN KEY ("assignedToId") REFERENCES "actuate_users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
384
-
1
+ -- CreateSchema
2
+ CREATE SCHEMA IF NOT EXISTS "public";
3
+
4
+ -- CreateEnum
5
+ CREATE TYPE "DocumentStatus" AS ENUM ('DRAFT', 'PUBLISHED', 'ARCHIVED', 'SCHEDULED', 'SCHEDULED_UNPUBLISH');
6
+
7
+ -- CreateEnum
8
+ CREATE TYPE "UserRole" AS ENUM ('ADMIN', 'EDITOR', 'AUTHOR', 'CLIENT');
9
+
10
+ -- CreateEnum
11
+ CREATE TYPE "ChangeType" AS ENUM ('CREATE', 'UPDATE', 'PUBLISH', 'RESTORE');
12
+
13
+ -- CreateEnum
14
+ CREATE TYPE "AuditEvent" AS ENUM ('login_success', 'login_failed', 'logout', 'password_change', 'password_reset_request', 'password_reset_complete', 'totp_enabled', 'totp_disabled', 'api_key_created', 'api_key_revoked', 'document_created', 'document_updated', 'document_published', 'document_deleted', 'media_uploaded', 'media_deleted', 'user_created', 'user_updated', 'user_deactivated', 'settings_changed', 'export_requested', 'import_completed');
15
+
16
+ -- CreateEnum
17
+ CREATE TYPE "NotificationType" AS ENUM ('DOCUMENT_PUBLISHED', 'DOCUMENT_ASSIGNED', 'REVIEW_REQUESTED', 'REVIEW_APPROVED', 'COMMENT_ADDED', 'SYSTEM_ALERT', 'WORKFLOW_STEP');
18
+
19
+ -- CreateEnum
20
+ CREATE TYPE "OrderStatus" AS ENUM ('PENDING', 'CONFIRMED', 'PROCESSING', 'SHIPPED', 'DELIVERED', 'CANCELLED', 'REFUNDED');
21
+
22
+ -- CreateEnum
23
+ CREATE TYPE "PaymentStatus" AS ENUM ('PENDING', 'AUTHORIZED', 'CAPTURED', 'FAILED', 'REFUNDED', 'PARTIALLY_REFUNDED');
24
+
25
+ -- CreateEnum
26
+ CREATE TYPE "DiscountType" AS ENUM ('PERCENTAGE', 'FIXED_AMOUNT', 'FREE_SHIPPING');
27
+
28
+ -- CreateEnum
29
+ CREATE TYPE "ProductType" AS ENUM ('PHYSICAL', 'DIGITAL', 'SUBSCRIPTION', 'BUNDLE');
30
+
31
+ -- CreateTable
32
+ CREATE TABLE "actuate_users" (
33
+ "id" TEXT NOT NULL,
34
+ "email" TEXT NOT NULL,
35
+ "name" TEXT NOT NULL,
36
+ "avatarUrl" TEXT,
37
+ "role" "UserRole" NOT NULL DEFAULT 'AUTHOR',
38
+ "passwordHash" TEXT,
39
+ "totpSecret" TEXT,
40
+ "authProvider" TEXT,
41
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
42
+ "isApproved" BOOLEAN NOT NULL DEFAULT false,
43
+ "emailVerified" BOOLEAN NOT NULL DEFAULT false,
44
+ "lastLoginAt" TIMESTAMP(3),
45
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
46
+ "updatedAt" TIMESTAMP(3) NOT NULL,
47
+
48
+ CONSTRAINT "actuate_users_pkey" PRIMARY KEY ("id")
49
+ );
50
+
51
+ -- CreateTable
52
+ CREATE TABLE "actuate_oauth_accounts" (
53
+ "id" TEXT NOT NULL,
54
+ "userId" TEXT NOT NULL,
55
+ "provider" TEXT NOT NULL,
56
+ "providerAccountId" TEXT NOT NULL,
57
+ "accessToken" TEXT,
58
+ "refreshToken" TEXT,
59
+ "expiresAt" TIMESTAMP(3),
60
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
61
+
62
+ CONSTRAINT "actuate_oauth_accounts_pkey" PRIMARY KEY ("id")
63
+ );
64
+
65
+ -- CreateTable
66
+ CREATE TABLE "actuate_sessions" (
67
+ "id" TEXT NOT NULL,
68
+ "userId" TEXT NOT NULL,
69
+ "token" TEXT NOT NULL,
70
+ "expiresAt" TIMESTAMP(3) NOT NULL,
71
+ "revokedAt" TIMESTAMP(3),
72
+ "ipAddress" TEXT,
73
+ "userAgent" TEXT,
74
+ "fingerprintHash" TEXT,
75
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
76
+
77
+ CONSTRAINT "actuate_sessions_pkey" PRIMARY KEY ("id")
78
+ );
79
+
80
+ -- CreateTable
81
+ CREATE TABLE "actuate_api_keys" (
82
+ "id" TEXT NOT NULL,
83
+ "name" TEXT NOT NULL,
84
+ "keyHash" TEXT NOT NULL,
85
+ "keyPrefix" TEXT NOT NULL,
86
+ "userId" TEXT NOT NULL,
87
+ "scopes" JSONB NOT NULL,
88
+ "ipRestrictions" JSONB,
89
+ "expiresAt" TIMESTAMP(3),
90
+ "lastUsedAt" TIMESTAMP(3),
91
+ "revokedAt" TIMESTAMP(3),
92
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
93
+
94
+ CONSTRAINT "actuate_api_keys_pkey" PRIMARY KEY ("id")
95
+ );
96
+
97
+ -- CreateTable
98
+ CREATE TABLE "actuate_audit_logs" (
99
+ "id" TEXT NOT NULL,
100
+ "event" TEXT NOT NULL,
101
+ "userId" TEXT,
102
+ "ipAddress" TEXT,
103
+ "userAgent" TEXT,
104
+ "details" JSONB,
105
+ "timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
106
+
107
+ CONSTRAINT "actuate_audit_logs_pkey" PRIMARY KEY ("id")
108
+ );
109
+
110
+ -- CreateTable
111
+ CREATE TABLE "actuate_documents" (
112
+ "id" TEXT NOT NULL,
113
+ "collection" TEXT NOT NULL,
114
+ "data" JSONB NOT NULL,
115
+ "status" "DocumentStatus" NOT NULL DEFAULT 'DRAFT',
116
+ "locale" TEXT,
117
+ "localeGroupId" TEXT,
118
+ "createdById" TEXT NOT NULL,
119
+ "updatedById" TEXT NOT NULL,
120
+ "publishedAt" TIMESTAMP(3),
121
+ "scheduledAt" TIMESTAMP(3),
122
+ "scheduledUnpublishAt" TIMESTAMP(3),
123
+ "deletedAt" TIMESTAMP(3),
124
+ "searchVector" TEXT,
125
+ "plainText" TEXT,
126
+ "contentHash" TEXT,
127
+ "structuredData" JSONB,
128
+ "contentGraph" JSONB,
129
+ "siteId" TEXT,
130
+ "templateId" TEXT,
131
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
132
+ "updatedAt" TIMESTAMP(3) NOT NULL,
133
+
134
+ CONSTRAINT "actuate_documents_pkey" PRIMARY KEY ("id")
135
+ );
136
+
137
+ -- CreateTable
138
+ CREATE TABLE "actuate_versions" (
139
+ "id" TEXT NOT NULL,
140
+ "documentId" TEXT NOT NULL,
141
+ "data" JSONB NOT NULL,
142
+ "changedById" TEXT NOT NULL,
143
+ "changeType" "ChangeType" NOT NULL,
144
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
145
+
146
+ CONSTRAINT "actuate_versions_pkey" PRIMARY KEY ("id")
147
+ );
148
+
149
+ -- CreateTable
150
+ CREATE TABLE "actuate_media" (
151
+ "id" TEXT NOT NULL,
152
+ "filename" TEXT NOT NULL,
153
+ "storageKey" TEXT NOT NULL,
154
+ "mimeType" TEXT NOT NULL,
155
+ "fileSize" INTEGER NOT NULL,
156
+ "width" INTEGER,
157
+ "height" INTEGER,
158
+ "altText" TEXT,
159
+ "title" TEXT,
160
+ "uploadedById" TEXT NOT NULL,
161
+ "focalPointX" DOUBLE PRECISION,
162
+ "focalPointY" DOUBLE PRECISION,
163
+ "blurHash" TEXT,
164
+ "aiAltText" TEXT,
165
+ "aiTags" JSONB,
166
+ "aiDescription" TEXT,
167
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
168
+ "updatedAt" TIMESTAMP(3) NOT NULL,
169
+
170
+ CONSTRAINT "actuate_media_pkey" PRIMARY KEY ("id")
171
+ );
172
+
173
+ -- CreateTable
174
+ CREATE TABLE "actuate_media_usages" (
175
+ "id" TEXT NOT NULL,
176
+ "mediaId" TEXT NOT NULL,
177
+ "documentId" TEXT NOT NULL,
178
+ "fieldName" TEXT NOT NULL,
179
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
180
+
181
+ CONSTRAINT "actuate_media_usages_pkey" PRIMARY KEY ("id")
182
+ );
183
+
184
+ -- CreateTable
185
+ CREATE TABLE "actuate_content_locks" (
186
+ "id" TEXT NOT NULL,
187
+ "documentId" TEXT NOT NULL,
188
+ "userId" TEXT NOT NULL,
189
+ "lockedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
190
+ "expiresAt" TIMESTAMP(3) NOT NULL,
191
+
192
+ CONSTRAINT "actuate_content_locks_pkey" PRIMARY KEY ("id")
193
+ );
194
+
195
+ -- CreateTable
196
+ CREATE TABLE "actuate_notifications" (
197
+ "id" TEXT NOT NULL,
198
+ "userId" TEXT NOT NULL,
199
+ "type" TEXT NOT NULL,
200
+ "title" TEXT NOT NULL,
201
+ "message" TEXT,
202
+ "link" TEXT,
203
+ "read" BOOLEAN NOT NULL DEFAULT false,
204
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
205
+
206
+ CONSTRAINT "actuate_notifications_pkey" PRIMARY KEY ("id")
207
+ );
208
+
209
+ -- CreateTable
210
+ CREATE TABLE "actuate_content_templates" (
211
+ "id" TEXT NOT NULL,
212
+ "name" TEXT NOT NULL,
213
+ "collection" TEXT NOT NULL,
214
+ "templateData" JSONB NOT NULL,
215
+ "createdById" TEXT NOT NULL,
216
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
217
+ "updatedAt" TIMESTAMP(3) NOT NULL,
218
+
219
+ CONSTRAINT "actuate_content_templates_pkey" PRIMARY KEY ("id")
220
+ );
221
+
222
+ -- CreateTable
223
+ CREATE TABLE "actuate_sites" (
224
+ "id" TEXT NOT NULL,
225
+ "domain" TEXT NOT NULL,
226
+ "name" TEXT NOT NULL,
227
+ "configOverrides" JSONB,
228
+ "isDefault" BOOLEAN NOT NULL DEFAULT false,
229
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
230
+ "updatedAt" TIMESTAMP(3) NOT NULL,
231
+
232
+ CONSTRAINT "actuate_sites_pkey" PRIMARY KEY ("id")
233
+ );
234
+
235
+ -- CreateTable
236
+ CREATE TABLE "actuate_workflow_states" (
237
+ "id" TEXT NOT NULL,
238
+ "documentId" TEXT NOT NULL,
239
+ "currentStep" INTEGER NOT NULL DEFAULT 0,
240
+ "assignedToId" TEXT,
241
+ "status" TEXT NOT NULL DEFAULT 'pending',
242
+ "definition" JSONB NOT NULL,
243
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
244
+ "updatedAt" TIMESTAMP(3) NOT NULL,
245
+
246
+ CONSTRAINT "actuate_workflow_states_pkey" PRIMARY KEY ("id")
247
+ );
248
+
249
+ -- CreateTable
250
+ CREATE TABLE "actuate_redirects" (
251
+ "id" TEXT NOT NULL,
252
+ "source" TEXT NOT NULL,
253
+ "destination" TEXT NOT NULL,
254
+ "statusCode" INTEGER NOT NULL DEFAULT 301,
255
+ "isRegex" BOOLEAN NOT NULL DEFAULT false,
256
+ "notes" TEXT,
257
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
258
+ "updatedAt" TIMESTAMP(3) NOT NULL,
259
+
260
+ CONSTRAINT "actuate_redirects_pkey" PRIMARY KEY ("id")
261
+ );
262
+
263
+ -- CreateTable
264
+ CREATE TABLE "actuate_form_submissions" (
265
+ "id" TEXT NOT NULL,
266
+ "formId" TEXT NOT NULL,
267
+ "data" JSONB NOT NULL,
268
+ "attribution" JSONB,
269
+ "status" TEXT NOT NULL DEFAULT 'new',
270
+ "submittedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
271
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
272
+
273
+ CONSTRAINT "actuate_form_submissions_pkey" PRIMARY KEY ("id")
274
+ );
275
+
276
+ -- CreateTable
277
+ CREATE TABLE "actuate_backup_records" (
278
+ "id" TEXT NOT NULL,
279
+ "filename" TEXT NOT NULL,
280
+ "storageKey" TEXT NOT NULL,
281
+ "sizeBytes" INTEGER NOT NULL,
282
+ "type" TEXT NOT NULL,
283
+ "metadata" JSONB,
284
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
285
+
286
+ CONSTRAINT "actuate_backup_records_pkey" PRIMARY KEY ("id")
287
+ );
288
+
289
+ -- CreateIndex
290
+ CREATE UNIQUE INDEX "actuate_users_email_key" ON "actuate_users"("email");
291
+
292
+ -- CreateIndex
293
+ CREATE UNIQUE INDEX "actuate_oauth_accounts_provider_providerAccountId_key" ON "actuate_oauth_accounts"("provider", "providerAccountId");
294
+
295
+ -- CreateIndex
296
+ CREATE UNIQUE INDEX "actuate_sessions_token_key" ON "actuate_sessions"("token");
297
+
298
+ -- CreateIndex
299
+ CREATE UNIQUE INDEX "actuate_api_keys_keyHash_key" ON "actuate_api_keys"("keyHash");
300
+
301
+ -- CreateIndex
302
+ CREATE INDEX "actuate_audit_logs_event_idx" ON "actuate_audit_logs"("event");
303
+
304
+ -- CreateIndex
305
+ CREATE INDEX "actuate_audit_logs_userId_idx" ON "actuate_audit_logs"("userId");
306
+
307
+ -- CreateIndex
308
+ CREATE INDEX "actuate_audit_logs_timestamp_idx" ON "actuate_audit_logs"("timestamp");
309
+
310
+ -- CreateIndex
311
+ CREATE INDEX "actuate_documents_collection_idx" ON "actuate_documents"("collection");
312
+
313
+ -- CreateIndex
314
+ CREATE INDEX "actuate_documents_status_idx" ON "actuate_documents"("status");
315
+
316
+ -- CreateIndex
317
+ CREATE INDEX "actuate_documents_deletedAt_idx" ON "actuate_documents"("deletedAt");
318
+
319
+ -- CreateIndex
320
+ CREATE INDEX "actuate_documents_publishedAt_idx" ON "actuate_documents"("publishedAt");
321
+
322
+ -- CreateIndex
323
+ CREATE UNIQUE INDEX "actuate_media_storageKey_key" ON "actuate_media"("storageKey");
324
+
325
+ -- CreateIndex
326
+ CREATE UNIQUE INDEX "actuate_sites_domain_key" ON "actuate_sites"("domain");
327
+
328
+ -- CreateIndex
329
+ CREATE UNIQUE INDEX "actuate_workflow_states_documentId_key" ON "actuate_workflow_states"("documentId");
330
+
331
+ -- CreateIndex
332
+ CREATE UNIQUE INDEX "actuate_redirects_source_key" ON "actuate_redirects"("source");
333
+
334
+ -- CreateIndex
335
+ CREATE INDEX "actuate_form_submissions_formId_idx" ON "actuate_form_submissions"("formId");
336
+
337
+ -- CreateIndex
338
+ CREATE INDEX "actuate_form_submissions_status_idx" ON "actuate_form_submissions"("status");
339
+
340
+ -- AddForeignKey
341
+ ALTER TABLE "actuate_oauth_accounts" ADD CONSTRAINT "actuate_oauth_accounts_userId_fkey" FOREIGN KEY ("userId") REFERENCES "actuate_users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
342
+
343
+ -- AddForeignKey
344
+ ALTER TABLE "actuate_sessions" ADD CONSTRAINT "actuate_sessions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "actuate_users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
345
+
346
+ -- AddForeignKey
347
+ ALTER TABLE "actuate_api_keys" ADD CONSTRAINT "actuate_api_keys_userId_fkey" FOREIGN KEY ("userId") REFERENCES "actuate_users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
348
+
349
+ -- AddForeignKey
350
+ ALTER TABLE "actuate_documents" ADD CONSTRAINT "actuate_documents_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "actuate_users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
351
+
352
+ -- AddForeignKey
353
+ ALTER TABLE "actuate_documents" ADD CONSTRAINT "actuate_documents_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES "actuate_users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
354
+
355
+ -- AddForeignKey
356
+ ALTER TABLE "actuate_versions" ADD CONSTRAINT "actuate_versions_documentId_fkey" FOREIGN KEY ("documentId") REFERENCES "actuate_documents"("id") ON DELETE CASCADE ON UPDATE CASCADE;
357
+
358
+ -- AddForeignKey
359
+ ALTER TABLE "actuate_versions" ADD CONSTRAINT "actuate_versions_changedById_fkey" FOREIGN KEY ("changedById") REFERENCES "actuate_users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
360
+
361
+ -- AddForeignKey
362
+ ALTER TABLE "actuate_media" ADD CONSTRAINT "actuate_media_uploadedById_fkey" FOREIGN KEY ("uploadedById") REFERENCES "actuate_users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
363
+
364
+ -- AddForeignKey
365
+ ALTER TABLE "actuate_media_usages" ADD CONSTRAINT "actuate_media_usages_mediaId_fkey" FOREIGN KEY ("mediaId") REFERENCES "actuate_media"("id") ON DELETE CASCADE ON UPDATE CASCADE;
366
+
367
+ -- AddForeignKey
368
+ ALTER TABLE "actuate_media_usages" ADD CONSTRAINT "actuate_media_usages_documentId_fkey" FOREIGN KEY ("documentId") REFERENCES "actuate_documents"("id") ON DELETE CASCADE ON UPDATE CASCADE;
369
+
370
+ -- AddForeignKey
371
+ ALTER TABLE "actuate_content_locks" ADD CONSTRAINT "actuate_content_locks_documentId_fkey" FOREIGN KEY ("documentId") REFERENCES "actuate_documents"("id") ON DELETE CASCADE ON UPDATE CASCADE;
372
+
373
+ -- AddForeignKey
374
+ ALTER TABLE "actuate_content_locks" ADD CONSTRAINT "actuate_content_locks_userId_fkey" FOREIGN KEY ("userId") REFERENCES "actuate_users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
375
+
376
+ -- AddForeignKey
377
+ ALTER TABLE "actuate_notifications" ADD CONSTRAINT "actuate_notifications_userId_fkey" FOREIGN KEY ("userId") REFERENCES "actuate_users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
378
+
379
+ -- AddForeignKey
380
+ ALTER TABLE "actuate_content_templates" ADD CONSTRAINT "actuate_content_templates_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "actuate_users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
381
+
382
+ -- AddForeignKey
383
+ ALTER TABLE "actuate_workflow_states" ADD CONSTRAINT "actuate_workflow_states_assignedToId_fkey" FOREIGN KEY ("assignedToId") REFERENCES "actuate_users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
384
+