@nextblock-cms/db 0.17.2 → 0.17.4

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.
@@ -1,1262 +1,1262 @@
1
- -- AUTO-GENERATED baseline: squash generation 2 (of migrations 00000000000000..00000000000042).
2
- -- 002 · constraints (PK / unique / check / FK) + indexes
3
- -- Idempotent; safe to replay. Regenerate via tools/scripts/rebaseline-transform.mjs — do not hand-edit.
4
- -- Naming: GGNNN_name.sql (GG = squash generation, NNN = sequence). See docs/04-DATABASE-AND-AUTH.md.
5
-
6
- DO $rb$ BEGIN
7
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'blocks_pkey' AND conrelid = 'public.blocks'::regclass) THEN
8
- ALTER TABLE ONLY public.blocks
9
- ADD CONSTRAINT blocks_pkey PRIMARY KEY (id);
10
- END IF;
11
- END $rb$;
12
-
13
- DO $rb$ BEGIN
14
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'categories_pkey' AND conrelid = 'public.categories'::regclass) THEN
15
- ALTER TABLE ONLY public.categories
16
- ADD CONSTRAINT categories_pkey PRIMARY KEY (id);
17
- END IF;
18
- END $rb$;
19
-
20
- DO $rb$ BEGIN
21
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'categories_slug_key' AND conrelid = 'public.categories'::regclass) THEN
22
- ALTER TABLE ONLY public.categories
23
- ADD CONSTRAINT categories_slug_key UNIQUE (slug);
24
- END IF;
25
- END $rb$;
26
-
27
- DO $rb$ BEGIN
28
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cms_interactions_pkey' AND conrelid = 'public.cms_interactions'::regclass) THEN
29
- ALTER TABLE ONLY public.cms_interactions
30
- ADD CONSTRAINT cms_interactions_pkey PRIMARY KEY (id);
31
- END IF;
32
- END $rb$;
33
-
34
- DO $rb$ BEGIN
35
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cms_redirects_pkey' AND conrelid = 'public.cms_redirects'::regclass) THEN
36
- ALTER TABLE ONLY public.cms_redirects
37
- ADD CONSTRAINT cms_redirects_pkey PRIMARY KEY (id);
38
- END IF;
39
- END $rb$;
40
-
41
- DO $rb$ BEGIN
42
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cms_redirects_source_path_key' AND conrelid = 'public.cms_redirects'::regclass) THEN
43
- ALTER TABLE ONLY public.cms_redirects
44
- ADD CONSTRAINT cms_redirects_source_path_key UNIQUE (source_path);
45
- END IF;
46
- END $rb$;
47
-
48
- DO $rb$ BEGIN
49
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'content_drafts_parent_unique' AND conrelid = 'public.content_drafts'::regclass) THEN
50
- ALTER TABLE ONLY public.content_drafts
51
- ADD CONSTRAINT content_drafts_parent_unique UNIQUE (parent_type, parent_id);
52
- END IF;
53
- END $rb$;
54
-
55
- DO $rb$ BEGIN
56
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'content_drafts_pkey' AND conrelid = 'public.content_drafts'::regclass) THEN
57
- ALTER TABLE ONLY public.content_drafts
58
- ADD CONSTRAINT content_drafts_pkey PRIMARY KEY (id);
59
- END IF;
60
- END $rb$;
61
-
62
- DO $rb$ BEGIN
63
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cortex_ai_db_mutation_audit_pkey' AND conrelid = 'public.cortex_ai_db_mutation_audit'::regclass) THEN
64
- ALTER TABLE ONLY public.cortex_ai_db_mutation_audit
65
- ADD CONSTRAINT cortex_ai_db_mutation_audit_pkey PRIMARY KEY (id);
66
- END IF;
67
- END $rb$;
68
-
69
- DO $rb$ BEGIN
70
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_freemius_mappings_pkey' AND conrelid = 'public.coupon_freemius_mappings'::regclass) THEN
71
- ALTER TABLE ONLY public.coupon_freemius_mappings
72
- ADD CONSTRAINT coupon_freemius_mappings_pkey PRIMARY KEY (id);
73
- END IF;
74
- END $rb$;
75
-
76
- DO $rb$ BEGIN
77
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_products_pkey' AND conrelid = 'public.coupon_products'::regclass) THEN
78
- ALTER TABLE ONLY public.coupon_products
79
- ADD CONSTRAINT coupon_products_pkey PRIMARY KEY (coupon_id, product_id);
80
- END IF;
81
- END $rb$;
82
-
83
- DO $rb$ BEGIN
84
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_redemptions_pkey' AND conrelid = 'public.coupon_redemptions'::regclass) THEN
85
- ALTER TABLE ONLY public.coupon_redemptions
86
- ADD CONSTRAINT coupon_redemptions_pkey PRIMARY KEY (id);
87
- END IF;
88
- END $rb$;
89
-
90
- DO $rb$ BEGIN
91
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupons_pkey' AND conrelid = 'public.coupons'::regclass) THEN
92
- ALTER TABLE ONLY public.coupons
93
- ADD CONSTRAINT coupons_pkey PRIMARY KEY (id);
94
- END IF;
95
- END $rb$;
96
-
97
- DO $rb$ BEGIN
98
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'currencies_code_key' AND conrelid = 'public.currencies'::regclass) THEN
99
- ALTER TABLE ONLY public.currencies
100
- ADD CONSTRAINT currencies_code_key UNIQUE (code);
101
- END IF;
102
- END $rb$;
103
-
104
- DO $rb$ BEGIN
105
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'currencies_pkey' AND conrelid = 'public.currencies'::regclass) THEN
106
- ALTER TABLE ONLY public.currencies
107
- ADD CONSTRAINT currencies_pkey PRIMARY KEY (id);
108
- END IF;
109
- END $rb$;
110
-
111
- DO $rb$ BEGIN
112
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'custom_block_definitions_pkey' AND conrelid = 'public.custom_block_definitions'::regclass) THEN
113
- ALTER TABLE ONLY public.custom_block_definitions
114
- ADD CONSTRAINT custom_block_definitions_pkey PRIMARY KEY (id);
115
- END IF;
116
- END $rb$;
117
-
118
- DO $rb$ BEGIN
119
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'custom_block_definitions_slug_key' AND conrelid = 'public.custom_block_definitions'::regclass) THEN
120
- ALTER TABLE ONLY public.custom_block_definitions
121
- ADD CONSTRAINT custom_block_definitions_slug_key UNIQUE (slug);
122
- END IF;
123
- END $rb$;
124
-
125
- DO $rb$ BEGIN
126
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'email_2fa_challenges_pkey' AND conrelid = 'public.email_2fa_challenges'::regclass) THEN
127
- ALTER TABLE ONLY public.email_2fa_challenges
128
- ADD CONSTRAINT email_2fa_challenges_pkey PRIMARY KEY (id);
129
- END IF;
130
- END $rb$;
131
-
132
- DO $rb$ BEGIN
133
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'form_endpoints_pkey' AND conrelid = 'public.form_endpoints'::regclass) THEN
134
- ALTER TABLE ONLY public.form_endpoints
135
- ADD CONSTRAINT form_endpoints_pkey PRIMARY KEY (form_key);
136
- END IF;
137
- END $rb$;
138
-
139
- DO $rb$ BEGIN
140
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'freemius_plans_pkey' AND conrelid = 'public.freemius_plans'::regclass) THEN
141
- ALTER TABLE ONLY public.freemius_plans
142
- ADD CONSTRAINT freemius_plans_pkey PRIMARY KEY (id);
143
- END IF;
144
- END $rb$;
145
-
146
- DO $rb$ BEGIN
147
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'freemius_pricing_pkey' AND conrelid = 'public.freemius_pricing'::regclass) THEN
148
- ALTER TABLE ONLY public.freemius_pricing
149
- ADD CONSTRAINT freemius_pricing_pkey PRIMARY KEY (id);
150
- END IF;
151
- END $rb$;
152
-
153
- DO $rb$ BEGIN
154
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'inventory_items_pkey' AND conrelid = 'public.inventory_items'::regclass) THEN
155
- ALTER TABLE ONLY public.inventory_items
156
- ADD CONSTRAINT inventory_items_pkey PRIMARY KEY (sku);
157
- END IF;
158
- END $rb$;
159
-
160
- DO $rb$ BEGIN
161
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'languages_code_key' AND conrelid = 'public.languages'::regclass) THEN
162
- ALTER TABLE ONLY public.languages
163
- ADD CONSTRAINT languages_code_key UNIQUE (code);
164
- END IF;
165
- END $rb$;
166
-
167
- DO $rb$ BEGIN
168
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'languages_pkey' AND conrelid = 'public.languages'::regclass) THEN
169
- ALTER TABLE ONLY public.languages
170
- ADD CONSTRAINT languages_pkey PRIMARY KEY (id);
171
- END IF;
172
- END $rb$;
173
-
174
- DO $rb$ BEGIN
175
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'logos_pkey' AND conrelid = 'public.logos'::regclass) THEN
176
- ALTER TABLE ONLY public.logos
177
- ADD CONSTRAINT logos_pkey PRIMARY KEY (id);
178
- END IF;
179
- END $rb$;
180
-
181
- DO $rb$ BEGIN
182
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_access_tokens_pkey' AND conrelid = 'public.mcp_access_tokens'::regclass) THEN
183
- ALTER TABLE ONLY public.mcp_access_tokens
184
- ADD CONSTRAINT mcp_access_tokens_pkey PRIMARY KEY (id);
185
- END IF;
186
- END $rb$;
187
-
188
- DO $rb$ BEGIN
189
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_access_tokens_token_hash_key' AND conrelid = 'public.mcp_access_tokens'::regclass) THEN
190
- ALTER TABLE ONLY public.mcp_access_tokens
191
- ADD CONSTRAINT mcp_access_tokens_token_hash_key UNIQUE (token_hash);
192
- END IF;
193
- END $rb$;
194
-
195
- DO $rb$ BEGIN
196
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'media_object_key_key' AND conrelid = 'public.media'::regclass) THEN
197
- ALTER TABLE ONLY public.media
198
- ADD CONSTRAINT media_object_key_key UNIQUE (object_key);
199
- END IF;
200
- END $rb$;
201
-
202
- DO $rb$ BEGIN
203
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'media_pkey' AND conrelid = 'public.media'::regclass) THEN
204
- ALTER TABLE ONLY public.media
205
- ADD CONSTRAINT media_pkey PRIMARY KEY (id);
206
- END IF;
207
- END $rb$;
208
-
209
- DO $rb$ BEGIN
210
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'message_threads_pkey' AND conrelid = 'public.message_threads'::regclass) THEN
211
- ALTER TABLE ONLY public.message_threads
212
- ADD CONSTRAINT message_threads_pkey PRIMARY KEY (id);
213
- END IF;
214
- END $rb$;
215
-
216
- DO $rb$ BEGIN
217
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'message_threads_token_hash_key' AND conrelid = 'public.message_threads'::regclass) THEN
218
- ALTER TABLE ONLY public.message_threads
219
- ADD CONSTRAINT message_threads_token_hash_key UNIQUE (token_hash);
220
- END IF;
221
- END $rb$;
222
-
223
- DO $rb$ BEGIN
224
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'navigation_items_pkey' AND conrelid = 'public.navigation_items'::regclass) THEN
225
- ALTER TABLE ONLY public.navigation_items
226
- ADD CONSTRAINT navigation_items_pkey PRIMARY KEY (id);
227
- END IF;
228
- END $rb$;
229
-
230
- DO $rb$ BEGIN
231
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'order_items_pkey' AND conrelid = 'public.order_items'::regclass) THEN
232
- ALTER TABLE ONLY public.order_items
233
- ADD CONSTRAINT order_items_pkey PRIMARY KEY (id);
234
- END IF;
235
- END $rb$;
236
-
237
- DO $rb$ BEGIN
238
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'orders_pkey' AND conrelid = 'public.orders'::regclass) THEN
239
- ALTER TABLE ONLY public.orders
240
- ADD CONSTRAINT orders_pkey PRIMARY KEY (id);
241
- END IF;
242
- END $rb$;
243
-
244
- DO $rb$ BEGIN
245
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'orders_stripe_session_id_key' AND conrelid = 'public.orders'::regclass) THEN
246
- ALTER TABLE ONLY public.orders
247
- ADD CONSTRAINT orders_stripe_session_id_key UNIQUE (stripe_session_id);
248
- END IF;
249
- END $rb$;
250
-
251
- DO $rb$ BEGIN
252
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'package_activations_license_key_package_id_key' AND conrelid = 'public.package_activations'::regclass) THEN
253
- ALTER TABLE ONLY public.package_activations
254
- ADD CONSTRAINT package_activations_license_key_package_id_key UNIQUE (license_key, package_id);
255
- END IF;
256
- END $rb$;
257
-
258
- DO $rb$ BEGIN
259
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'package_activations_pkey' AND conrelid = 'public.package_activations'::regclass) THEN
260
- ALTER TABLE ONLY public.package_activations
261
- ADD CONSTRAINT package_activations_pkey PRIMARY KEY (id);
262
- END IF;
263
- END $rb$;
264
-
265
- DO $rb$ BEGIN
266
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'page_revisions_page_version_key' AND conrelid = 'public.page_revisions'::regclass) THEN
267
- ALTER TABLE ONLY public.page_revisions
268
- ADD CONSTRAINT page_revisions_page_version_key UNIQUE (page_id, version);
269
- END IF;
270
- END $rb$;
271
-
272
- DO $rb$ BEGIN
273
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'page_revisions_pkey' AND conrelid = 'public.page_revisions'::regclass) THEN
274
- ALTER TABLE ONLY public.page_revisions
275
- ADD CONSTRAINT page_revisions_pkey PRIMARY KEY (id);
276
- END IF;
277
- END $rb$;
278
-
279
- DO $rb$ BEGIN
280
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'pages_language_id_slug_key' AND conrelid = 'public.pages'::regclass) THEN
281
- ALTER TABLE ONLY public.pages
282
- ADD CONSTRAINT pages_language_id_slug_key UNIQUE (language_id, slug);
283
- END IF;
284
- END $rb$;
285
-
286
- DO $rb$ BEGIN
287
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'pages_pkey' AND conrelid = 'public.pages'::regclass) THEN
288
- ALTER TABLE ONLY public.pages
289
- ADD CONSTRAINT pages_pkey PRIMARY KEY (id);
290
- END IF;
291
- END $rb$;
292
-
293
- DO $rb$ BEGIN
294
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'post_revisions_pkey' AND conrelid = 'public.post_revisions'::regclass) THEN
295
- ALTER TABLE ONLY public.post_revisions
296
- ADD CONSTRAINT post_revisions_pkey PRIMARY KEY (id);
297
- END IF;
298
- END $rb$;
299
-
300
- DO $rb$ BEGIN
301
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'post_revisions_post_version_key' AND conrelid = 'public.post_revisions'::regclass) THEN
302
- ALTER TABLE ONLY public.post_revisions
303
- ADD CONSTRAINT post_revisions_post_version_key UNIQUE (post_id, version);
304
- END IF;
305
- END $rb$;
306
-
307
- DO $rb$ BEGIN
308
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'posts_language_id_slug_key' AND conrelid = 'public.posts'::regclass) THEN
309
- ALTER TABLE ONLY public.posts
310
- ADD CONSTRAINT posts_language_id_slug_key UNIQUE (language_id, slug);
311
- END IF;
312
- END $rb$;
313
-
314
- DO $rb$ BEGIN
315
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'posts_pkey' AND conrelid = 'public.posts'::regclass) THEN
316
- ALTER TABLE ONLY public.posts
317
- ADD CONSTRAINT posts_pkey PRIMARY KEY (id);
318
- END IF;
319
- END $rb$;
320
-
321
- DO $rb$ BEGIN
322
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'privacy_consent_logs_consent_token_key' AND conrelid = 'public.privacy_consent_logs'::regclass) THEN
323
- ALTER TABLE ONLY public.privacy_consent_logs
324
- ADD CONSTRAINT privacy_consent_logs_consent_token_key UNIQUE (consent_token);
325
- END IF;
326
- END $rb$;
327
-
328
- DO $rb$ BEGIN
329
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'privacy_consent_logs_pkey' AND conrelid = 'public.privacy_consent_logs'::regclass) THEN
330
- ALTER TABLE ONLY public.privacy_consent_logs
331
- ADD CONSTRAINT privacy_consent_logs_pkey PRIMARY KEY (id);
332
- END IF;
333
- END $rb$;
334
-
335
- DO $rb$ BEGIN
336
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_attribute_terms_attribute_id_slug_key' AND conrelid = 'public.product_attribute_terms'::regclass) THEN
337
- ALTER TABLE ONLY public.product_attribute_terms
338
- ADD CONSTRAINT product_attribute_terms_attribute_id_slug_key UNIQUE (attribute_id, slug);
339
- END IF;
340
- END $rb$;
341
-
342
- DO $rb$ BEGIN
343
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_attribute_terms_pkey' AND conrelid = 'public.product_attribute_terms'::regclass) THEN
344
- ALTER TABLE ONLY public.product_attribute_terms
345
- ADD CONSTRAINT product_attribute_terms_pkey PRIMARY KEY (id);
346
- END IF;
347
- END $rb$;
348
-
349
- DO $rb$ BEGIN
350
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_attributes_pkey' AND conrelid = 'public.product_attributes'::regclass) THEN
351
- ALTER TABLE ONLY public.product_attributes
352
- ADD CONSTRAINT product_attributes_pkey PRIMARY KEY (id);
353
- END IF;
354
- END $rb$;
355
-
356
- DO $rb$ BEGIN
357
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_attributes_slug_key' AND conrelid = 'public.product_attributes'::regclass) THEN
358
- ALTER TABLE ONLY public.product_attributes
359
- ADD CONSTRAINT product_attributes_slug_key UNIQUE (slug);
360
- END IF;
361
- END $rb$;
362
-
363
- DO $rb$ BEGIN
364
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_categories_pkey' AND conrelid = 'public.product_categories'::regclass) THEN
365
- ALTER TABLE ONLY public.product_categories
366
- ADD CONSTRAINT product_categories_pkey PRIMARY KEY (product_id, category_id);
367
- END IF;
368
- END $rb$;
369
-
370
- DO $rb$ BEGIN
371
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_drafts_pkey' AND conrelid = 'public.product_drafts'::regclass) THEN
372
- ALTER TABLE ONLY public.product_drafts
373
- ADD CONSTRAINT product_drafts_pkey PRIMARY KEY (id);
374
- END IF;
375
- END $rb$;
376
-
377
- DO $rb$ BEGIN
378
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_drafts_product_unique' AND conrelid = 'public.product_drafts'::regclass) THEN
379
- ALTER TABLE ONLY public.product_drafts
380
- ADD CONSTRAINT product_drafts_product_unique UNIQUE (product_id);
381
- END IF;
382
- END $rb$;
383
-
384
- DO $rb$ BEGIN
385
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_freemius_sale_coupons_pkey' AND conrelid = 'public.product_freemius_sale_coupons'::regclass) THEN
386
- ALTER TABLE ONLY public.product_freemius_sale_coupons
387
- ADD CONSTRAINT product_freemius_sale_coupons_pkey PRIMARY KEY (id);
388
- END IF;
389
- END $rb$;
390
-
391
- DO $rb$ BEGIN
392
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_freemius_sale_coupons_product_unique' AND conrelid = 'public.product_freemius_sale_coupons'::regclass) THEN
393
- ALTER TABLE ONLY public.product_freemius_sale_coupons
394
- ADD CONSTRAINT product_freemius_sale_coupons_product_unique UNIQUE (product_id);
395
- END IF;
396
- END $rb$;
397
-
398
- DO $rb$ BEGIN
399
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_inquiries_pkey' AND conrelid = 'public.product_inquiries'::regclass) THEN
400
- ALTER TABLE ONLY public.product_inquiries
401
- ADD CONSTRAINT product_inquiries_pkey PRIMARY KEY (id);
402
- END IF;
403
- END $rb$;
404
-
405
- DO $rb$ BEGIN
406
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_media_pkey' AND conrelid = 'public.product_media'::regclass) THEN
407
- ALTER TABLE ONLY public.product_media
408
- ADD CONSTRAINT product_media_pkey PRIMARY KEY (product_id, media_id);
409
- END IF;
410
- END $rb$;
411
-
412
- DO $rb$ BEGIN
413
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_revisions_pkey' AND conrelid = 'public.product_revisions'::regclass) THEN
414
- ALTER TABLE ONLY public.product_revisions
415
- ADD CONSTRAINT product_revisions_pkey PRIMARY KEY (id);
416
- END IF;
417
- END $rb$;
418
-
419
- DO $rb$ BEGIN
420
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_revisions_product_version_key' AND conrelid = 'public.product_revisions'::regclass) THEN
421
- ALTER TABLE ONLY public.product_revisions
422
- ADD CONSTRAINT product_revisions_product_version_key UNIQUE (product_id, version);
423
- END IF;
424
- END $rb$;
425
-
426
- DO $rb$ BEGIN
427
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_variants_pkey' AND conrelid = 'public.product_variants'::regclass) THEN
428
- ALTER TABLE ONLY public.product_variants
429
- ADD CONSTRAINT product_variants_pkey PRIMARY KEY (id);
430
- END IF;
431
- END $rb$;
432
-
433
- DO $rb$ BEGIN
434
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_variants_product_id_sku_key' AND conrelid = 'public.product_variants'::regclass) THEN
435
- ALTER TABLE ONLY public.product_variants
436
- ADD CONSTRAINT product_variants_product_id_sku_key UNIQUE (product_id, sku);
437
- END IF;
438
- END $rb$;
439
-
440
- DO $rb$ BEGIN
441
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'products_language_id_sku_key' AND conrelid = 'public.products'::regclass) THEN
442
- ALTER TABLE ONLY public.products
443
- ADD CONSTRAINT products_language_id_sku_key UNIQUE (language_id, sku);
444
- END IF;
445
- END $rb$;
446
-
447
- DO $rb$ BEGIN
448
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'products_language_id_slug_key' AND conrelid = 'public.products'::regclass) THEN
449
- ALTER TABLE ONLY public.products
450
- ADD CONSTRAINT products_language_id_slug_key UNIQUE (language_id, slug);
451
- END IF;
452
- END $rb$;
453
-
454
- DO $rb$ BEGIN
455
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'products_pkey' AND conrelid = 'public.products'::regclass) THEN
456
- ALTER TABLE ONLY public.products
457
- ADD CONSTRAINT products_pkey PRIMARY KEY (id);
458
- END IF;
459
- END $rb$;
460
-
461
- DO $rb$ BEGIN
462
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'profiles_pkey' AND conrelid = 'public.profiles'::regclass) THEN
463
- ALTER TABLE ONLY public.profiles
464
- ADD CONSTRAINT profiles_pkey PRIMARY KEY (id);
465
- END IF;
466
- END $rb$;
467
-
468
- DO $rb$ BEGIN
469
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'shipping_zone_locations_pkey' AND conrelid = 'public.shipping_zone_locations'::regclass) THEN
470
- ALTER TABLE ONLY public.shipping_zone_locations
471
- ADD CONSTRAINT shipping_zone_locations_pkey PRIMARY KEY (id);
472
- END IF;
473
- END $rb$;
474
-
475
- DO $rb$ BEGIN
476
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'shipping_zone_methods_pkey' AND conrelid = 'public.shipping_zone_methods'::regclass) THEN
477
- ALTER TABLE ONLY public.shipping_zone_methods
478
- ADD CONSTRAINT shipping_zone_methods_pkey PRIMARY KEY (id);
479
- END IF;
480
- END $rb$;
481
-
482
- DO $rb$ BEGIN
483
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'shipping_zones_pkey' AND conrelid = 'public.shipping_zones'::regclass) THEN
484
- ALTER TABLE ONLY public.shipping_zones
485
- ADD CONSTRAINT shipping_zones_pkey PRIMARY KEY (id);
486
- END IF;
487
- END $rb$;
488
-
489
- DO $rb$ BEGIN
490
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'site_script_revisions_pkey' AND conrelid = 'public.site_script_revisions'::regclass) THEN
491
- ALTER TABLE ONLY public.site_script_revisions
492
- ADD CONSTRAINT site_script_revisions_pkey PRIMARY KEY (id);
493
- END IF;
494
- END $rb$;
495
-
496
- DO $rb$ BEGIN
497
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'site_scripts_pkey' AND conrelid = 'public.site_scripts'::regclass) THEN
498
- ALTER TABLE ONLY public.site_scripts
499
- ADD CONSTRAINT site_scripts_pkey PRIMARY KEY (id);
500
- END IF;
501
- END $rb$;
502
-
503
- DO $rb$ BEGIN
504
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'site_settings_pkey' AND conrelid = 'public.site_settings'::regclass) THEN
505
- ALTER TABLE ONLY public.site_settings
506
- ADD CONSTRAINT site_settings_pkey PRIMARY KEY (key);
507
- END IF;
508
- END $rb$;
509
-
510
- DO $rb$ BEGIN
511
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'site_themes_pkey' AND conrelid = 'public.site_themes'::regclass) THEN
512
- ALTER TABLE ONLY public.site_themes
513
- ADD CONSTRAINT site_themes_pkey PRIMARY KEY (id);
514
- END IF;
515
- END $rb$;
516
-
517
- DO $rb$ BEGIN
518
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'site_themes_slug_key' AND conrelid = 'public.site_themes'::regclass) THEN
519
- ALTER TABLE ONLY public.site_themes
520
- ADD CONSTRAINT site_themes_slug_key UNIQUE (slug);
521
- END IF;
522
- END $rb$;
523
-
524
- DO $rb$ BEGIN
525
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'system_alerts_pkey' AND conrelid = 'public.system_alerts'::regclass) THEN
526
- ALTER TABLE ONLY public.system_alerts
527
- ADD CONSTRAINT system_alerts_pkey PRIMARY KEY (id);
528
- END IF;
529
- END $rb$;
530
-
531
- DO $rb$ BEGIN
532
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'system_configuration_pkey' AND conrelid = 'public.system_configuration'::regclass) THEN
533
- ALTER TABLE ONLY public.system_configuration
534
- ADD CONSTRAINT system_configuration_pkey PRIMARY KEY (id);
535
- END IF;
536
- END $rb$;
537
-
538
- DO $rb$ BEGIN
539
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'tax_rates_pkey' AND conrelid = 'public.tax_rates'::regclass) THEN
540
- ALTER TABLE ONLY public.tax_rates
541
- ADD CONSTRAINT tax_rates_pkey PRIMARY KEY (id);
542
- END IF;
543
- END $rb$;
544
-
545
- DO $rb$ BEGIN
546
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'thread_messages_pkey' AND conrelid = 'public.thread_messages'::regclass) THEN
547
- ALTER TABLE ONLY public.thread_messages
548
- ADD CONSTRAINT thread_messages_pkey PRIMARY KEY (id);
549
- END IF;
550
- END $rb$;
551
-
552
- DO $rb$ BEGIN
553
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'translations_pkey' AND conrelid = 'public.translations'::regclass) THEN
554
- ALTER TABLE ONLY public.translations
555
- ADD CONSTRAINT translations_pkey PRIMARY KEY (key);
556
- END IF;
557
- END $rb$;
558
-
559
- DO $rb$ BEGIN
560
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'ucp_cart_sessions_pkey' AND conrelid = 'public.ucp_cart_sessions'::regclass) THEN
561
- ALTER TABLE ONLY public.ucp_cart_sessions
562
- ADD CONSTRAINT ucp_cart_sessions_pkey PRIMARY KEY (id);
563
- END IF;
564
- END $rb$;
565
-
566
- DO $rb$ BEGIN
567
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_addresses_pkey' AND conrelid = 'public.user_addresses'::regclass) THEN
568
- ALTER TABLE ONLY public.user_addresses
569
- ADD CONSTRAINT user_addresses_pkey PRIMARY KEY (id);
570
- END IF;
571
- END $rb$;
572
-
573
- DO $rb$ BEGIN
574
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_security_settings_pkey' AND conrelid = 'public.user_security_settings'::regclass) THEN
575
- ALTER TABLE ONLY public.user_security_settings
576
- ADD CONSTRAINT user_security_settings_pkey PRIMARY KEY (user_id);
577
- END IF;
578
- END $rb$;
579
-
580
- DO $rb$ BEGIN
581
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_trusted_devices_device_hash_key' AND conrelid = 'public.user_trusted_devices'::regclass) THEN
582
- ALTER TABLE ONLY public.user_trusted_devices
583
- ADD CONSTRAINT user_trusted_devices_device_hash_key UNIQUE (device_hash);
584
- END IF;
585
- END $rb$;
586
-
587
- DO $rb$ BEGIN
588
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_trusted_devices_pkey' AND conrelid = 'public.user_trusted_devices'::regclass) THEN
589
- ALTER TABLE ONLY public.user_trusted_devices
590
- ADD CONSTRAINT user_trusted_devices_pkey PRIMARY KEY (id);
591
- END IF;
592
- END $rb$;
593
-
594
- DO $rb$ BEGIN
595
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'variant_attribute_mapping_pkey' AND conrelid = 'public.variant_attribute_mapping'::regclass) THEN
596
- ALTER TABLE ONLY public.variant_attribute_mapping
597
- ADD CONSTRAINT variant_attribute_mapping_pkey PRIMARY KEY (variant_id, attribute_term_id);
598
- END IF;
599
- END $rb$;
600
-
601
- CREATE INDEX IF NOT EXISTS cms_interactions_inbox_idx ON public.cms_interactions USING btree (created_at DESC) WHERE (parent_id IS NULL);
602
-
603
- CREATE INDEX IF NOT EXISTS cms_interactions_parent_idx ON public.cms_interactions USING btree (parent_id, created_at) WHERE (parent_id IS NOT NULL);
604
-
605
- CREATE INDEX IF NOT EXISTS cms_interactions_post_type_status_idx ON public.cms_interactions USING btree (post_id, type, status, created_at DESC) WHERE (post_id IS NOT NULL);
606
-
607
- CREATE INDEX IF NOT EXISTS cms_interactions_product_type_status_idx ON public.cms_interactions USING btree (product_id, type, status, created_at DESC) WHERE (product_id IS NOT NULL);
608
-
609
- CREATE INDEX IF NOT EXISTS cms_redirects_active_source_idx ON public.cms_redirects USING btree (source_path) WHERE is_active;
610
-
611
- CREATE INDEX IF NOT EXISTS content_drafts_author_id_idx ON public.content_drafts USING btree (author_id);
612
-
613
- CREATE INDEX IF NOT EXISTS content_drafts_parent_idx ON public.content_drafts USING btree (parent_type, parent_id);
614
-
615
- CREATE INDEX IF NOT EXISTS content_drafts_updated_at_idx ON public.content_drafts USING btree (updated_at DESC);
616
-
617
- CREATE UNIQUE INDEX IF NOT EXISTS coupon_freemius_mappings_coupon_product_unique ON public.coupon_freemius_mappings USING btree (coupon_id, freemius_product_id);
618
-
619
- CREATE UNIQUE INDEX IF NOT EXISTS coupon_redemptions_order_unique ON public.coupon_redemptions USING btree (order_id) WHERE (order_id IS NOT NULL);
620
-
621
- CREATE UNIQUE INDEX IF NOT EXISTS coupons_code_unique ON public.coupons USING btree (upper(code));
622
-
623
- CREATE UNIQUE INDEX IF NOT EXISTS ensure_single_default_language_idx ON public.languages USING btree (is_default) WHERE (is_default = true);
624
-
625
- CREATE INDEX IF NOT EXISTS idx_blocks_language_id ON public.blocks USING btree (language_id);
626
-
627
- CREATE INDEX IF NOT EXISTS idx_blocks_page_id ON public.blocks USING btree (page_id);
628
-
629
- CREATE INDEX IF NOT EXISTS idx_blocks_post_id ON public.blocks USING btree (post_id);
630
-
631
- CREATE INDEX IF NOT EXISTS idx_coupon_freemius_mappings_freemius_product_id ON public.coupon_freemius_mappings USING btree (freemius_product_id);
632
-
633
- CREATE INDEX IF NOT EXISTS idx_coupon_freemius_mappings_product_id ON public.coupon_freemius_mappings USING btree (product_id) WHERE (product_id IS NOT NULL);
634
-
635
- CREATE INDEX IF NOT EXISTS idx_coupon_products_product_id ON public.coupon_products USING btree (product_id);
636
-
637
- CREATE INDEX IF NOT EXISTS idx_coupon_redemptions_coupon_id ON public.coupon_redemptions USING btree (coupon_id);
638
-
639
- CREATE INDEX IF NOT EXISTS idx_coupon_redemptions_user_id ON public.coupon_redemptions USING btree (user_id) WHERE (user_id IS NOT NULL);
640
-
641
- CREATE INDEX IF NOT EXISTS idx_coupons_active_dates ON public.coupons USING btree (is_active, starts_at, ends_at);
642
-
643
- CREATE UNIQUE INDEX IF NOT EXISTS idx_currencies_single_default ON public.currencies USING btree (is_default) WHERE (is_default = true);
644
-
645
- CREATE INDEX IF NOT EXISTS idx_custom_block_definitions_is_original ON public.custom_block_definitions USING btree (is_original);
646
-
647
- CREATE INDEX IF NOT EXISTS idx_email_2fa_challenges_expires_at ON public.email_2fa_challenges USING btree (expires_at);
648
-
649
- CREATE INDEX IF NOT EXISTS idx_email_2fa_challenges_user_id ON public.email_2fa_challenges USING btree (user_id);
650
-
651
- CREATE INDEX IF NOT EXISTS idx_freemius_plans_product_id ON public.freemius_plans USING btree (product_id);
652
-
653
- CREATE INDEX IF NOT EXISTS idx_freemius_pricing_plan_id ON public.freemius_pricing USING btree (plan_id);
654
-
655
- CREATE INDEX IF NOT EXISTS idx_inventory_items_updated_at ON public.inventory_items USING btree (updated_at DESC);
656
-
657
- CREATE INDEX IF NOT EXISTS idx_logos_media_id ON public.logos USING btree (media_id);
658
-
659
- CREATE INDEX IF NOT EXISTS idx_media_uploader_id ON public.media USING btree (uploader_id);
660
-
661
- CREATE INDEX IF NOT EXISTS idx_navigation_items_language_id ON public.navigation_items USING btree (language_id);
662
-
663
- CREATE INDEX IF NOT EXISTS idx_navigation_items_menu_lang_order ON public.navigation_items USING btree (menu_key, language_id, "order");
664
-
665
- CREATE INDEX IF NOT EXISTS idx_navigation_items_page_id ON public.navigation_items USING btree (page_id);
666
-
667
- CREATE INDEX IF NOT EXISTS idx_navigation_items_parent_id ON public.navigation_items USING btree (parent_id);
668
-
669
- CREATE INDEX IF NOT EXISTS idx_order_items_order_id ON public.order_items USING btree (order_id);
670
-
671
- CREATE INDEX IF NOT EXISTS idx_order_items_product_id ON public.order_items USING btree (product_id);
672
-
673
- CREATE INDEX IF NOT EXISTS idx_order_items_variant_id ON public.order_items USING btree (variant_id);
674
-
675
- CREATE INDEX IF NOT EXISTS idx_orders_coupon_id ON public.orders USING btree (coupon_id) WHERE (coupon_id IS NOT NULL);
676
-
677
- CREATE INDEX IF NOT EXISTS idx_orders_freemius_license_id ON public.orders USING btree (freemius_license_id) WHERE (freemius_license_id IS NOT NULL);
678
-
679
- CREATE INDEX IF NOT EXISTS idx_orders_freemius_subscription_id ON public.orders USING btree (freemius_subscription_id) WHERE (freemius_subscription_id IS NOT NULL);
680
-
681
- CREATE INDEX IF NOT EXISTS idx_orders_freemius_trial_id ON public.orders USING btree (freemius_trial_id) WHERE (freemius_trial_id IS NOT NULL);
682
-
683
- CREATE UNIQUE INDEX IF NOT EXISTS idx_orders_invoice_number_unique ON public.orders USING btree (invoice_number) WHERE (invoice_number IS NOT NULL);
684
-
685
- CREATE INDEX IF NOT EXISTS idx_orders_user_id ON public.orders USING btree (user_id);
686
-
687
- CREATE INDEX IF NOT EXISTS idx_package_activations_license_key ON public.package_activations USING btree (license_key);
688
-
689
- CREATE INDEX IF NOT EXISTS idx_package_activations_package_id ON public.package_activations USING btree (package_id);
690
-
691
- CREATE INDEX IF NOT EXISTS idx_page_revisions_author_id ON public.page_revisions USING btree (author_id);
692
-
693
- CREATE INDEX IF NOT EXISTS idx_page_revisions_page_id_version ON public.page_revisions USING btree (page_id, version);
694
-
695
- CREATE INDEX IF NOT EXISTS idx_pages_author_id ON public.pages USING btree (author_id);
696
-
697
- CREATE INDEX IF NOT EXISTS idx_pages_feature_image_id ON public.pages USING btree (feature_image_id);
698
-
699
- CREATE INDEX IF NOT EXISTS idx_pages_translation_group_id ON public.pages USING btree (translation_group_id);
700
-
701
- CREATE INDEX IF NOT EXISTS idx_post_revisions_author_id ON public.post_revisions USING btree (author_id);
702
-
703
- CREATE INDEX IF NOT EXISTS idx_post_revisions_post_id_version ON public.post_revisions USING btree (post_id, version);
704
-
705
- CREATE INDEX IF NOT EXISTS idx_posts_author_id ON public.posts USING btree (author_id);
706
-
707
- CREATE INDEX IF NOT EXISTS idx_posts_feature_image_id ON public.posts USING btree (feature_image_id);
708
-
709
- CREATE INDEX IF NOT EXISTS idx_posts_translation_group_id ON public.posts USING btree (translation_group_id);
710
-
711
- CREATE INDEX IF NOT EXISTS idx_privacy_consent_logs_created_at ON public.privacy_consent_logs USING btree (created_at DESC);
712
-
713
- CREATE INDEX IF NOT EXISTS idx_product_attribute_terms_attribute_id ON public.product_attribute_terms USING btree (attribute_id);
714
-
715
- CREATE INDEX IF NOT EXISTS idx_product_categories_category_id ON public.product_categories USING btree (category_id);
716
-
717
- CREATE INDEX IF NOT EXISTS idx_product_categories_product_id ON public.product_categories USING btree (product_id);
718
-
719
- CREATE INDEX IF NOT EXISTS idx_product_freemius_sale_coupons_freemius_product_id ON public.product_freemius_sale_coupons USING btree (freemius_product_id);
720
-
721
- CREATE INDEX IF NOT EXISTS idx_product_media_media_id ON public.product_media USING btree (media_id);
722
-
723
- CREATE INDEX IF NOT EXISTS idx_product_media_product_id ON public.product_media USING btree (product_id);
724
-
725
- CREATE INDEX IF NOT EXISTS idx_product_revisions_author_id ON public.product_revisions USING btree (author_id);
726
-
727
- CREATE INDEX IF NOT EXISTS idx_product_revisions_product_id_version ON public.product_revisions USING btree (product_id, version);
728
-
729
- CREATE INDEX IF NOT EXISTS idx_product_variants_main_media_id ON public.product_variants USING btree (main_media_id);
730
-
731
- CREATE INDEX IF NOT EXISTS idx_product_variants_prices_gin ON public.product_variants USING gin (prices jsonb_path_ops);
732
-
733
- CREATE INDEX IF NOT EXISTS idx_product_variants_product_id ON public.product_variants USING btree (product_id);
734
-
735
- CREATE INDEX IF NOT EXISTS idx_products_prices_gin ON public.products USING gin (prices jsonb_path_ops);
736
-
737
- CREATE INDEX IF NOT EXISTS idx_products_slug ON public.products USING btree (slug);
738
-
739
- CREATE INDEX IF NOT EXISTS idx_products_translation_group_id ON public.products USING btree (translation_group_id);
740
-
741
- CREATE INDEX IF NOT EXISTS idx_shipping_zone_locations_country_state_postal ON public.shipping_zone_locations USING btree (country_code, state_code, postal_code);
742
-
743
- CREATE INDEX IF NOT EXISTS idx_shipping_zone_locations_zone_id ON public.shipping_zone_locations USING btree (zone_id);
744
-
745
- CREATE INDEX IF NOT EXISTS idx_shipping_zone_methods_name_translations ON public.shipping_zone_methods USING gin (name_translations);
746
-
747
- CREATE INDEX IF NOT EXISTS idx_shipping_zone_methods_zone_id ON public.shipping_zone_methods USING btree (zone_id);
748
-
749
- CREATE INDEX IF NOT EXISTS idx_system_alerts_unresolved ON public.system_alerts USING btree (is_resolved, created_at DESC);
750
-
751
- CREATE INDEX IF NOT EXISTS idx_tax_rates_country_state ON public.tax_rates USING btree (country_code, state_code);
752
-
753
- CREATE INDEX IF NOT EXISTS idx_ucp_cart_sessions_created_at ON public.ucp_cart_sessions USING btree (created_at DESC);
754
-
755
- CREATE INDEX IF NOT EXISTS idx_ucp_cart_sessions_status_expires_at ON public.ucp_cart_sessions USING btree (status, expires_at);
756
-
757
- CREATE UNIQUE INDEX IF NOT EXISTS idx_user_addresses_one_default_per_type ON public.user_addresses USING btree (user_id, address_type) WHERE (is_default = true);
758
-
759
- CREATE INDEX IF NOT EXISTS idx_user_addresses_type ON public.user_addresses USING btree (address_type);
760
-
761
- CREATE INDEX IF NOT EXISTS idx_user_addresses_user_id ON public.user_addresses USING btree (user_id);
762
-
763
- CREATE INDEX IF NOT EXISTS idx_user_trusted_devices_expires_at ON public.user_trusted_devices USING btree (expires_at);
764
-
765
- CREATE INDEX IF NOT EXISTS idx_user_trusted_devices_user_id ON public.user_trusted_devices USING btree (user_id);
766
-
767
- CREATE INDEX IF NOT EXISTS idx_variant_attribute_mapping_attribute_term_id ON public.variant_attribute_mapping USING btree (attribute_term_id);
768
-
769
- CREATE INDEX IF NOT EXISTS mcp_access_tokens_created_at_idx ON public.mcp_access_tokens USING btree (created_at DESC);
770
-
771
- CREATE INDEX IF NOT EXISTS mcp_access_tokens_token_hash_idx ON public.mcp_access_tokens USING btree (token_hash);
772
-
773
- CREATE INDEX IF NOT EXISTS media_folder_idx ON public.media USING btree (folder);
774
-
775
- CREATE INDEX IF NOT EXISTS message_threads_last_message_idx ON public.message_threads USING btree (last_message_at DESC);
776
-
777
- CREATE INDEX IF NOT EXISTS message_threads_source_last_idx ON public.message_threads USING btree (source, last_message_at DESC);
778
-
779
- CREATE INDEX IF NOT EXISTS message_threads_subject_idx ON public.message_threads USING btree (subject_id) WHERE (subject_id IS NOT NULL);
780
-
781
- CREATE INDEX IF NOT EXISTS message_threads_unread_idx ON public.message_threads USING btree (last_message_at DESC) WHERE (unread_for_admin = true);
782
-
783
- CREATE INDEX IF NOT EXISTS pages_status_published_at_idx ON public.pages USING btree (status, published_at);
784
-
785
- CREATE INDEX IF NOT EXISTS product_drafts_author_id_idx ON public.product_drafts USING btree (author_id);
786
-
787
- CREATE INDEX IF NOT EXISTS product_drafts_product_id_idx ON public.product_drafts USING btree (product_id);
788
-
789
- CREATE INDEX IF NOT EXISTS product_drafts_updated_at_idx ON public.product_drafts USING btree (updated_at DESC);
790
-
791
- CREATE INDEX IF NOT EXISTS product_inquiries_created_idx ON public.product_inquiries USING btree (created_at DESC);
792
-
793
- CREATE INDEX IF NOT EXISTS product_inquiries_ip_created_idx ON public.product_inquiries USING btree (ip_masked, created_at DESC);
794
-
795
- CREATE INDEX IF NOT EXISTS product_inquiries_unresolved_idx ON public.product_inquiries USING btree (created_at DESC) WHERE (is_resolved = false);
796
-
797
- CREATE INDEX IF NOT EXISTS product_variants_sale_window_idx ON public.product_variants USING btree (sale_start_at, sale_end_at) WHERE ((sale_start_at IS NOT NULL) OR (sale_end_at IS NOT NULL));
798
-
799
- CREATE INDEX IF NOT EXISTS product_variants_scheduled_price_idx ON public.product_variants USING btree (scheduled_price_at) WHERE (scheduled_price_at IS NOT NULL);
800
-
801
- CREATE INDEX IF NOT EXISTS products_sale_window_idx ON public.products USING btree (sale_start_at, sale_end_at) WHERE ((sale_start_at IS NOT NULL) OR (sale_end_at IS NOT NULL));
802
-
803
- CREATE INDEX IF NOT EXISTS products_scheduled_price_idx ON public.products USING btree (scheduled_price_at) WHERE (scheduled_price_at IS NOT NULL);
804
-
805
- CREATE INDEX IF NOT EXISTS products_status_published_at_idx ON public.products USING btree (status, published_at);
806
-
807
- CREATE INDEX IF NOT EXISTS site_script_revisions_created_idx ON public.site_script_revisions USING btree (created_at DESC);
808
-
809
- CREATE INDEX IF NOT EXISTS site_script_revisions_script_created_idx ON public.site_script_revisions USING btree (script_id, created_at DESC);
810
-
811
- CREATE INDEX IF NOT EXISTS site_scripts_active_placement_sort_idx ON public.site_scripts USING btree (is_active, placement, sort_order);
812
-
813
- CREATE INDEX IF NOT EXISTS site_themes_active_sort_idx ON public.site_themes USING btree (is_active, sort_order);
814
-
815
- CREATE UNIQUE INDEX IF NOT EXISTS site_themes_single_default_idx ON public.site_themes USING btree (is_default) WHERE (is_default = true);
816
-
817
- CREATE UNIQUE INDEX IF NOT EXISTS tax_rates_country_state_name_key ON public.tax_rates USING btree (country_code, COALESCE(state_code, ''::text), lower(tax_name));
818
-
819
- CREATE INDEX IF NOT EXISTS thread_messages_ip_created_idx ON public.thread_messages USING btree (ip_masked, created_at DESC);
820
-
821
- CREATE INDEX IF NOT EXISTS thread_messages_thread_created_idx ON public.thread_messages USING btree (thread_id, created_at);
822
-
823
- DO $rb$ BEGIN
824
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'blocks_language_id_fkey' AND conrelid = 'public.blocks'::regclass) THEN
825
- ALTER TABLE ONLY public.blocks
826
- ADD CONSTRAINT blocks_language_id_fkey FOREIGN KEY (language_id) REFERENCES public.languages(id) ON DELETE CASCADE;
827
- END IF;
828
- END $rb$;
829
-
830
- DO $rb$ BEGIN
831
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'blocks_page_id_fkey' AND conrelid = 'public.blocks'::regclass) THEN
832
- ALTER TABLE ONLY public.blocks
833
- ADD CONSTRAINT blocks_page_id_fkey FOREIGN KEY (page_id) REFERENCES public.pages(id) ON DELETE CASCADE;
834
- END IF;
835
- END $rb$;
836
-
837
- DO $rb$ BEGIN
838
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'blocks_post_id_fkey' AND conrelid = 'public.blocks'::regclass) THEN
839
- ALTER TABLE ONLY public.blocks
840
- ADD CONSTRAINT blocks_post_id_fkey FOREIGN KEY (post_id) REFERENCES public.posts(id) ON DELETE CASCADE;
841
- END IF;
842
- END $rb$;
843
-
844
- DO $rb$ BEGIN
845
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'blocks_product_id_fkey' AND conrelid = 'public.blocks'::regclass) THEN
846
- ALTER TABLE ONLY public.blocks
847
- ADD CONSTRAINT blocks_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
848
- END IF;
849
- END $rb$;
850
-
851
- DO $rb$ BEGIN
852
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cms_interactions_parent_id_fkey' AND conrelid = 'public.cms_interactions'::regclass) THEN
853
- ALTER TABLE ONLY public.cms_interactions
854
- ADD CONSTRAINT cms_interactions_parent_id_fkey FOREIGN KEY (parent_id) REFERENCES public.cms_interactions(id) ON DELETE CASCADE;
855
- END IF;
856
- END $rb$;
857
-
858
- DO $rb$ BEGIN
859
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cms_interactions_post_id_fkey' AND conrelid = 'public.cms_interactions'::regclass) THEN
860
- ALTER TABLE ONLY public.cms_interactions
861
- ADD CONSTRAINT cms_interactions_post_id_fkey FOREIGN KEY (post_id) REFERENCES public.posts(id) ON DELETE CASCADE;
862
- END IF;
863
- END $rb$;
864
-
865
- DO $rb$ BEGIN
866
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cms_interactions_product_id_fkey' AND conrelid = 'public.cms_interactions'::regclass) THEN
867
- ALTER TABLE ONLY public.cms_interactions
868
- ADD CONSTRAINT cms_interactions_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
869
- END IF;
870
- END $rb$;
871
-
872
- DO $rb$ BEGIN
873
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cms_interactions_user_id_profiles_fkey' AND conrelid = 'public.cms_interactions'::regclass) THEN
874
- ALTER TABLE ONLY public.cms_interactions
875
- ADD CONSTRAINT cms_interactions_user_id_profiles_fkey FOREIGN KEY (user_id) REFERENCES public.profiles(id) ON DELETE CASCADE;
876
- END IF;
877
- END $rb$;
878
-
879
- DO $rb$ BEGIN
880
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'content_drafts_author_id_fkey' AND conrelid = 'public.content_drafts'::regclass) THEN
881
- ALTER TABLE ONLY public.content_drafts
882
- ADD CONSTRAINT content_drafts_author_id_fkey FOREIGN KEY (author_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
883
- END IF;
884
- END $rb$;
885
-
886
- DO $rb$ BEGIN
887
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cortex_ai_db_mutation_audit_actor_user_id_fkey' AND conrelid = 'public.cortex_ai_db_mutation_audit'::regclass) THEN
888
- ALTER TABLE ONLY public.cortex_ai_db_mutation_audit
889
- ADD CONSTRAINT cortex_ai_db_mutation_audit_actor_user_id_fkey FOREIGN KEY (actor_user_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
890
- END IF;
891
- END $rb$;
892
-
893
- DO $rb$ BEGIN
894
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_freemius_mappings_coupon_id_fkey' AND conrelid = 'public.coupon_freemius_mappings'::regclass) THEN
895
- ALTER TABLE ONLY public.coupon_freemius_mappings
896
- ADD CONSTRAINT coupon_freemius_mappings_coupon_id_fkey FOREIGN KEY (coupon_id) REFERENCES public.coupons(id) ON DELETE CASCADE;
897
- END IF;
898
- END $rb$;
899
-
900
- DO $rb$ BEGIN
901
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_freemius_mappings_product_id_fkey' AND conrelid = 'public.coupon_freemius_mappings'::regclass) THEN
902
- ALTER TABLE ONLY public.coupon_freemius_mappings
903
- ADD CONSTRAINT coupon_freemius_mappings_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE SET NULL;
904
- END IF;
905
- END $rb$;
906
-
907
- DO $rb$ BEGIN
908
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_products_coupon_id_fkey' AND conrelid = 'public.coupon_products'::regclass) THEN
909
- ALTER TABLE ONLY public.coupon_products
910
- ADD CONSTRAINT coupon_products_coupon_id_fkey FOREIGN KEY (coupon_id) REFERENCES public.coupons(id) ON DELETE CASCADE;
911
- END IF;
912
- END $rb$;
913
-
914
- DO $rb$ BEGIN
915
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_products_product_id_fkey' AND conrelid = 'public.coupon_products'::regclass) THEN
916
- ALTER TABLE ONLY public.coupon_products
917
- ADD CONSTRAINT coupon_products_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
918
- END IF;
919
- END $rb$;
920
-
921
- DO $rb$ BEGIN
922
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_redemptions_coupon_id_fkey' AND conrelid = 'public.coupon_redemptions'::regclass) THEN
923
- ALTER TABLE ONLY public.coupon_redemptions
924
- ADD CONSTRAINT coupon_redemptions_coupon_id_fkey FOREIGN KEY (coupon_id) REFERENCES public.coupons(id) ON DELETE SET NULL;
925
- END IF;
926
- END $rb$;
927
-
928
- DO $rb$ BEGIN
929
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_redemptions_order_id_fkey' AND conrelid = 'public.coupon_redemptions'::regclass) THEN
930
- ALTER TABLE ONLY public.coupon_redemptions
931
- ADD CONSTRAINT coupon_redemptions_order_id_fkey FOREIGN KEY (order_id) REFERENCES public.orders(id) ON DELETE CASCADE;
932
- END IF;
933
- END $rb$;
934
-
935
- DO $rb$ BEGIN
936
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_redemptions_user_id_fkey' AND conrelid = 'public.coupon_redemptions'::regclass) THEN
937
- ALTER TABLE ONLY public.coupon_redemptions
938
- ADD CONSTRAINT coupon_redemptions_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id) ON DELETE SET NULL;
939
- END IF;
940
- END $rb$;
941
-
942
- DO $rb$ BEGIN
943
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'email_2fa_challenges_user_id_fkey' AND conrelid = 'public.email_2fa_challenges'::regclass) THEN
944
- ALTER TABLE ONLY public.email_2fa_challenges
945
- ADD CONSTRAINT email_2fa_challenges_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id) ON DELETE CASCADE;
946
- END IF;
947
- END $rb$;
948
-
949
- DO $rb$ BEGIN
950
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'freemius_plans_product_id_fkey' AND conrelid = 'public.freemius_plans'::regclass) THEN
951
- ALTER TABLE ONLY public.freemius_plans
952
- ADD CONSTRAINT freemius_plans_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
953
- END IF;
954
- END $rb$;
955
-
956
- DO $rb$ BEGIN
957
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'freemius_pricing_plan_id_fkey' AND conrelid = 'public.freemius_pricing'::regclass) THEN
958
- ALTER TABLE ONLY public.freemius_pricing
959
- ADD CONSTRAINT freemius_pricing_plan_id_fkey FOREIGN KEY (plan_id) REFERENCES public.freemius_plans(id) ON DELETE CASCADE;
960
- END IF;
961
- END $rb$;
962
-
963
- DO $rb$ BEGIN
964
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'logos_media_id_fkey' AND conrelid = 'public.logos'::regclass) THEN
965
- ALTER TABLE ONLY public.logos
966
- ADD CONSTRAINT logos_media_id_fkey FOREIGN KEY (media_id) REFERENCES public.media(id) ON DELETE SET NULL;
967
- END IF;
968
- END $rb$;
969
-
970
- DO $rb$ BEGIN
971
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_access_tokens_created_by_fkey' AND conrelid = 'public.mcp_access_tokens'::regclass) THEN
972
- ALTER TABLE ONLY public.mcp_access_tokens
973
- ADD CONSTRAINT mcp_access_tokens_created_by_fkey FOREIGN KEY (created_by) REFERENCES auth.users(id) ON DELETE SET NULL;
974
- END IF;
975
- END $rb$;
976
-
977
- DO $rb$ BEGIN
978
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'media_uploader_id_fkey' AND conrelid = 'public.media'::regclass) THEN
979
- ALTER TABLE ONLY public.media
980
- ADD CONSTRAINT media_uploader_id_fkey FOREIGN KEY (uploader_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
981
- END IF;
982
- END $rb$;
983
-
984
- DO $rb$ BEGIN
985
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'navigation_items_language_id_fkey' AND conrelid = 'public.navigation_items'::regclass) THEN
986
- ALTER TABLE ONLY public.navigation_items
987
- ADD CONSTRAINT navigation_items_language_id_fkey FOREIGN KEY (language_id) REFERENCES public.languages(id) ON DELETE CASCADE;
988
- END IF;
989
- END $rb$;
990
-
991
- DO $rb$ BEGIN
992
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'navigation_items_page_id_fkey' AND conrelid = 'public.navigation_items'::regclass) THEN
993
- ALTER TABLE ONLY public.navigation_items
994
- ADD CONSTRAINT navigation_items_page_id_fkey FOREIGN KEY (page_id) REFERENCES public.pages(id) ON DELETE SET NULL;
995
- END IF;
996
- END $rb$;
997
-
998
- DO $rb$ BEGIN
999
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'navigation_items_parent_id_fkey' AND conrelid = 'public.navigation_items'::regclass) THEN
1000
- ALTER TABLE ONLY public.navigation_items
1001
- ADD CONSTRAINT navigation_items_parent_id_fkey FOREIGN KEY (parent_id) REFERENCES public.navigation_items(id) ON DELETE CASCADE;
1002
- END IF;
1003
- END $rb$;
1004
-
1005
- DO $rb$ BEGIN
1006
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'order_items_order_id_fkey' AND conrelid = 'public.order_items'::regclass) THEN
1007
- ALTER TABLE ONLY public.order_items
1008
- ADD CONSTRAINT order_items_order_id_fkey FOREIGN KEY (order_id) REFERENCES public.orders(id) ON DELETE CASCADE;
1009
- END IF;
1010
- END $rb$;
1011
-
1012
- DO $rb$ BEGIN
1013
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'order_items_product_id_fkey' AND conrelid = 'public.order_items'::regclass) THEN
1014
- ALTER TABLE ONLY public.order_items
1015
- ADD CONSTRAINT order_items_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE SET NULL;
1016
- END IF;
1017
- END $rb$;
1018
-
1019
- DO $rb$ BEGIN
1020
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'order_items_variant_id_fkey' AND conrelid = 'public.order_items'::regclass) THEN
1021
- ALTER TABLE ONLY public.order_items
1022
- ADD CONSTRAINT order_items_variant_id_fkey FOREIGN KEY (variant_id) REFERENCES public.product_variants(id) ON DELETE SET NULL;
1023
- END IF;
1024
- END $rb$;
1025
-
1026
- DO $rb$ BEGIN
1027
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'orders_coupon_id_fkey' AND conrelid = 'public.orders'::regclass) THEN
1028
- ALTER TABLE ONLY public.orders
1029
- ADD CONSTRAINT orders_coupon_id_fkey FOREIGN KEY (coupon_id) REFERENCES public.coupons(id) ON DELETE SET NULL;
1030
- END IF;
1031
- END $rb$;
1032
-
1033
- DO $rb$ BEGIN
1034
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'orders_user_id_fkey' AND conrelid = 'public.orders'::regclass) THEN
1035
- ALTER TABLE ONLY public.orders
1036
- ADD CONSTRAINT orders_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id) ON DELETE SET NULL;
1037
- END IF;
1038
- END $rb$;
1039
-
1040
- DO $rb$ BEGIN
1041
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'page_revisions_author_id_fkey' AND conrelid = 'public.page_revisions'::regclass) THEN
1042
- ALTER TABLE ONLY public.page_revisions
1043
- ADD CONSTRAINT page_revisions_author_id_fkey FOREIGN KEY (author_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
1044
- END IF;
1045
- END $rb$;
1046
-
1047
- DO $rb$ BEGIN
1048
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'page_revisions_page_id_fkey' AND conrelid = 'public.page_revisions'::regclass) THEN
1049
- ALTER TABLE ONLY public.page_revisions
1050
- ADD CONSTRAINT page_revisions_page_id_fkey FOREIGN KEY (page_id) REFERENCES public.pages(id) ON DELETE CASCADE;
1051
- END IF;
1052
- END $rb$;
1053
-
1054
- DO $rb$ BEGIN
1055
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'pages_author_id_fkey' AND conrelid = 'public.pages'::regclass) THEN
1056
- ALTER TABLE ONLY public.pages
1057
- ADD CONSTRAINT pages_author_id_fkey FOREIGN KEY (author_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
1058
- END IF;
1059
- END $rb$;
1060
-
1061
- DO $rb$ BEGIN
1062
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'pages_feature_image_id_fkey' AND conrelid = 'public.pages'::regclass) THEN
1063
- ALTER TABLE ONLY public.pages
1064
- ADD CONSTRAINT pages_feature_image_id_fkey FOREIGN KEY (feature_image_id) REFERENCES public.media(id) ON DELETE SET NULL;
1065
- END IF;
1066
- END $rb$;
1067
-
1068
- DO $rb$ BEGIN
1069
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'pages_language_id_fkey' AND conrelid = 'public.pages'::regclass) THEN
1070
- ALTER TABLE ONLY public.pages
1071
- ADD CONSTRAINT pages_language_id_fkey FOREIGN KEY (language_id) REFERENCES public.languages(id) ON DELETE CASCADE;
1072
- END IF;
1073
- END $rb$;
1074
-
1075
- DO $rb$ BEGIN
1076
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'post_revisions_author_id_fkey' AND conrelid = 'public.post_revisions'::regclass) THEN
1077
- ALTER TABLE ONLY public.post_revisions
1078
- ADD CONSTRAINT post_revisions_author_id_fkey FOREIGN KEY (author_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
1079
- END IF;
1080
- END $rb$;
1081
-
1082
- DO $rb$ BEGIN
1083
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'post_revisions_post_id_fkey' AND conrelid = 'public.post_revisions'::regclass) THEN
1084
- ALTER TABLE ONLY public.post_revisions
1085
- ADD CONSTRAINT post_revisions_post_id_fkey FOREIGN KEY (post_id) REFERENCES public.posts(id) ON DELETE CASCADE;
1086
- END IF;
1087
- END $rb$;
1088
-
1089
- DO $rb$ BEGIN
1090
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'posts_author_id_fkey' AND conrelid = 'public.posts'::regclass) THEN
1091
- ALTER TABLE ONLY public.posts
1092
- ADD CONSTRAINT posts_author_id_fkey FOREIGN KEY (author_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
1093
- END IF;
1094
- END $rb$;
1095
-
1096
- DO $rb$ BEGIN
1097
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'posts_feature_image_id_fkey' AND conrelid = 'public.posts'::regclass) THEN
1098
- ALTER TABLE ONLY public.posts
1099
- ADD CONSTRAINT posts_feature_image_id_fkey FOREIGN KEY (feature_image_id) REFERENCES public.media(id) ON DELETE SET NULL;
1100
- END IF;
1101
- END $rb$;
1102
-
1103
- DO $rb$ BEGIN
1104
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'posts_language_id_fkey' AND conrelid = 'public.posts'::regclass) THEN
1105
- ALTER TABLE ONLY public.posts
1106
- ADD CONSTRAINT posts_language_id_fkey FOREIGN KEY (language_id) REFERENCES public.languages(id) ON DELETE CASCADE;
1107
- END IF;
1108
- END $rb$;
1109
-
1110
- DO $rb$ BEGIN
1111
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_attribute_terms_attribute_id_fkey' AND conrelid = 'public.product_attribute_terms'::regclass) THEN
1112
- ALTER TABLE ONLY public.product_attribute_terms
1113
- ADD CONSTRAINT product_attribute_terms_attribute_id_fkey FOREIGN KEY (attribute_id) REFERENCES public.product_attributes(id) ON DELETE CASCADE;
1114
- END IF;
1115
- END $rb$;
1116
-
1117
- DO $rb$ BEGIN
1118
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_categories_category_id_fkey' AND conrelid = 'public.product_categories'::regclass) THEN
1119
- ALTER TABLE ONLY public.product_categories
1120
- ADD CONSTRAINT product_categories_category_id_fkey FOREIGN KEY (category_id) REFERENCES public.categories(id) ON DELETE CASCADE;
1121
- END IF;
1122
- END $rb$;
1123
-
1124
- DO $rb$ BEGIN
1125
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_categories_product_id_fkey' AND conrelid = 'public.product_categories'::regclass) THEN
1126
- ALTER TABLE ONLY public.product_categories
1127
- ADD CONSTRAINT product_categories_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
1128
- END IF;
1129
- END $rb$;
1130
-
1131
- DO $rb$ BEGIN
1132
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_drafts_author_id_fkey' AND conrelid = 'public.product_drafts'::regclass) THEN
1133
- ALTER TABLE ONLY public.product_drafts
1134
- ADD CONSTRAINT product_drafts_author_id_fkey FOREIGN KEY (author_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
1135
- END IF;
1136
- END $rb$;
1137
-
1138
- DO $rb$ BEGIN
1139
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_drafts_product_id_fkey' AND conrelid = 'public.product_drafts'::regclass) THEN
1140
- ALTER TABLE ONLY public.product_drafts
1141
- ADD CONSTRAINT product_drafts_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
1142
- END IF;
1143
- END $rb$;
1144
-
1145
- DO $rb$ BEGIN
1146
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_freemius_sale_coupons_product_id_fkey' AND conrelid = 'public.product_freemius_sale_coupons'::regclass) THEN
1147
- ALTER TABLE ONLY public.product_freemius_sale_coupons
1148
- ADD CONSTRAINT product_freemius_sale_coupons_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
1149
- END IF;
1150
- END $rb$;
1151
-
1152
- DO $rb$ BEGIN
1153
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_media_media_id_fkey' AND conrelid = 'public.product_media'::regclass) THEN
1154
- ALTER TABLE ONLY public.product_media
1155
- ADD CONSTRAINT product_media_media_id_fkey FOREIGN KEY (media_id) REFERENCES public.media(id) ON DELETE CASCADE;
1156
- END IF;
1157
- END $rb$;
1158
-
1159
- DO $rb$ BEGIN
1160
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_media_product_id_fkey' AND conrelid = 'public.product_media'::regclass) THEN
1161
- ALTER TABLE ONLY public.product_media
1162
- ADD CONSTRAINT product_media_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
1163
- END IF;
1164
- END $rb$;
1165
-
1166
- DO $rb$ BEGIN
1167
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_revisions_author_id_fkey' AND conrelid = 'public.product_revisions'::regclass) THEN
1168
- ALTER TABLE ONLY public.product_revisions
1169
- ADD CONSTRAINT product_revisions_author_id_fkey FOREIGN KEY (author_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
1170
- END IF;
1171
- END $rb$;
1172
-
1173
- DO $rb$ BEGIN
1174
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_revisions_product_id_fkey' AND conrelid = 'public.product_revisions'::regclass) THEN
1175
- ALTER TABLE ONLY public.product_revisions
1176
- ADD CONSTRAINT product_revisions_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
1177
- END IF;
1178
- END $rb$;
1179
-
1180
- DO $rb$ BEGIN
1181
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_variants_main_media_id_fkey' AND conrelid = 'public.product_variants'::regclass) THEN
1182
- ALTER TABLE ONLY public.product_variants
1183
- ADD CONSTRAINT product_variants_main_media_id_fkey FOREIGN KEY (main_media_id) REFERENCES public.media(id) ON DELETE SET NULL;
1184
- END IF;
1185
- END $rb$;
1186
-
1187
- DO $rb$ BEGIN
1188
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_variants_product_id_fkey' AND conrelid = 'public.product_variants'::regclass) THEN
1189
- ALTER TABLE ONLY public.product_variants
1190
- ADD CONSTRAINT product_variants_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
1191
- END IF;
1192
- END $rb$;
1193
-
1194
- DO $rb$ BEGIN
1195
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'products_language_id_fkey' AND conrelid = 'public.products'::regclass) THEN
1196
- ALTER TABLE ONLY public.products
1197
- ADD CONSTRAINT products_language_id_fkey FOREIGN KEY (language_id) REFERENCES public.languages(id) ON DELETE CASCADE;
1198
- END IF;
1199
- END $rb$;
1200
-
1201
- DO $rb$ BEGIN
1202
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'profiles_id_fkey' AND conrelid = 'public.profiles'::regclass) THEN
1203
- ALTER TABLE ONLY public.profiles
1204
- ADD CONSTRAINT profiles_id_fkey FOREIGN KEY (id) REFERENCES auth.users(id) ON DELETE CASCADE;
1205
- END IF;
1206
- END $rb$;
1207
-
1208
- DO $rb$ BEGIN
1209
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'shipping_zone_locations_zone_id_fkey' AND conrelid = 'public.shipping_zone_locations'::regclass) THEN
1210
- ALTER TABLE ONLY public.shipping_zone_locations
1211
- ADD CONSTRAINT shipping_zone_locations_zone_id_fkey FOREIGN KEY (zone_id) REFERENCES public.shipping_zones(id) ON DELETE CASCADE;
1212
- END IF;
1213
- END $rb$;
1214
-
1215
- DO $rb$ BEGIN
1216
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'shipping_zone_methods_zone_id_fkey' AND conrelid = 'public.shipping_zone_methods'::regclass) THEN
1217
- ALTER TABLE ONLY public.shipping_zone_methods
1218
- ADD CONSTRAINT shipping_zone_methods_zone_id_fkey FOREIGN KEY (zone_id) REFERENCES public.shipping_zones(id) ON DELETE CASCADE;
1219
- END IF;
1220
- END $rb$;
1221
-
1222
- DO $rb$ BEGIN
1223
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'thread_messages_thread_id_fkey' AND conrelid = 'public.thread_messages'::regclass) THEN
1224
- ALTER TABLE ONLY public.thread_messages
1225
- ADD CONSTRAINT thread_messages_thread_id_fkey FOREIGN KEY (thread_id) REFERENCES public.message_threads(id) ON DELETE CASCADE;
1226
- END IF;
1227
- END $rb$;
1228
-
1229
- DO $rb$ BEGIN
1230
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_addresses_user_id_fkey' AND conrelid = 'public.user_addresses'::regclass) THEN
1231
- ALTER TABLE ONLY public.user_addresses
1232
- ADD CONSTRAINT user_addresses_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.profiles(id) ON DELETE CASCADE;
1233
- END IF;
1234
- END $rb$;
1235
-
1236
- DO $rb$ BEGIN
1237
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_security_settings_user_id_fkey' AND conrelid = 'public.user_security_settings'::regclass) THEN
1238
- ALTER TABLE ONLY public.user_security_settings
1239
- ADD CONSTRAINT user_security_settings_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id) ON DELETE CASCADE;
1240
- END IF;
1241
- END $rb$;
1242
-
1243
- DO $rb$ BEGIN
1244
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_trusted_devices_user_id_fkey' AND conrelid = 'public.user_trusted_devices'::regclass) THEN
1245
- ALTER TABLE ONLY public.user_trusted_devices
1246
- ADD CONSTRAINT user_trusted_devices_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id) ON DELETE CASCADE;
1247
- END IF;
1248
- END $rb$;
1249
-
1250
- DO $rb$ BEGIN
1251
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'variant_attribute_mapping_attribute_term_id_fkey' AND conrelid = 'public.variant_attribute_mapping'::regclass) THEN
1252
- ALTER TABLE ONLY public.variant_attribute_mapping
1253
- ADD CONSTRAINT variant_attribute_mapping_attribute_term_id_fkey FOREIGN KEY (attribute_term_id) REFERENCES public.product_attribute_terms(id) ON DELETE CASCADE;
1254
- END IF;
1255
- END $rb$;
1256
-
1257
- DO $rb$ BEGIN
1258
- IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'variant_attribute_mapping_variant_id_fkey' AND conrelid = 'public.variant_attribute_mapping'::regclass) THEN
1259
- ALTER TABLE ONLY public.variant_attribute_mapping
1260
- ADD CONSTRAINT variant_attribute_mapping_variant_id_fkey FOREIGN KEY (variant_id) REFERENCES public.product_variants(id) ON DELETE CASCADE;
1261
- END IF;
1262
- END $rb$;
1
+ -- AUTO-GENERATED baseline: squash generation 2 (of migrations 00000000000000..00000000000042).
2
+ -- 002 · constraints (PK / unique / check / FK) + indexes
3
+ -- Idempotent; safe to replay. Regenerate via tools/scripts/rebaseline-transform.mjs — do not hand-edit.
4
+ -- Naming: GGNNN_name.sql (GG = squash generation, NNN = sequence). See docs/04-DATABASE-AND-AUTH.md.
5
+
6
+ DO $rb$ BEGIN
7
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'blocks_pkey' AND conrelid = 'public.blocks'::regclass) THEN
8
+ ALTER TABLE ONLY public.blocks
9
+ ADD CONSTRAINT blocks_pkey PRIMARY KEY (id);
10
+ END IF;
11
+ END $rb$;
12
+
13
+ DO $rb$ BEGIN
14
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'categories_pkey' AND conrelid = 'public.categories'::regclass) THEN
15
+ ALTER TABLE ONLY public.categories
16
+ ADD CONSTRAINT categories_pkey PRIMARY KEY (id);
17
+ END IF;
18
+ END $rb$;
19
+
20
+ DO $rb$ BEGIN
21
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'categories_slug_key' AND conrelid = 'public.categories'::regclass) THEN
22
+ ALTER TABLE ONLY public.categories
23
+ ADD CONSTRAINT categories_slug_key UNIQUE (slug);
24
+ END IF;
25
+ END $rb$;
26
+
27
+ DO $rb$ BEGIN
28
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cms_interactions_pkey' AND conrelid = 'public.cms_interactions'::regclass) THEN
29
+ ALTER TABLE ONLY public.cms_interactions
30
+ ADD CONSTRAINT cms_interactions_pkey PRIMARY KEY (id);
31
+ END IF;
32
+ END $rb$;
33
+
34
+ DO $rb$ BEGIN
35
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cms_redirects_pkey' AND conrelid = 'public.cms_redirects'::regclass) THEN
36
+ ALTER TABLE ONLY public.cms_redirects
37
+ ADD CONSTRAINT cms_redirects_pkey PRIMARY KEY (id);
38
+ END IF;
39
+ END $rb$;
40
+
41
+ DO $rb$ BEGIN
42
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cms_redirects_source_path_key' AND conrelid = 'public.cms_redirects'::regclass) THEN
43
+ ALTER TABLE ONLY public.cms_redirects
44
+ ADD CONSTRAINT cms_redirects_source_path_key UNIQUE (source_path);
45
+ END IF;
46
+ END $rb$;
47
+
48
+ DO $rb$ BEGIN
49
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'content_drafts_parent_unique' AND conrelid = 'public.content_drafts'::regclass) THEN
50
+ ALTER TABLE ONLY public.content_drafts
51
+ ADD CONSTRAINT content_drafts_parent_unique UNIQUE (parent_type, parent_id);
52
+ END IF;
53
+ END $rb$;
54
+
55
+ DO $rb$ BEGIN
56
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'content_drafts_pkey' AND conrelid = 'public.content_drafts'::regclass) THEN
57
+ ALTER TABLE ONLY public.content_drafts
58
+ ADD CONSTRAINT content_drafts_pkey PRIMARY KEY (id);
59
+ END IF;
60
+ END $rb$;
61
+
62
+ DO $rb$ BEGIN
63
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cortex_ai_db_mutation_audit_pkey' AND conrelid = 'public.cortex_ai_db_mutation_audit'::regclass) THEN
64
+ ALTER TABLE ONLY public.cortex_ai_db_mutation_audit
65
+ ADD CONSTRAINT cortex_ai_db_mutation_audit_pkey PRIMARY KEY (id);
66
+ END IF;
67
+ END $rb$;
68
+
69
+ DO $rb$ BEGIN
70
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_freemius_mappings_pkey' AND conrelid = 'public.coupon_freemius_mappings'::regclass) THEN
71
+ ALTER TABLE ONLY public.coupon_freemius_mappings
72
+ ADD CONSTRAINT coupon_freemius_mappings_pkey PRIMARY KEY (id);
73
+ END IF;
74
+ END $rb$;
75
+
76
+ DO $rb$ BEGIN
77
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_products_pkey' AND conrelid = 'public.coupon_products'::regclass) THEN
78
+ ALTER TABLE ONLY public.coupon_products
79
+ ADD CONSTRAINT coupon_products_pkey PRIMARY KEY (coupon_id, product_id);
80
+ END IF;
81
+ END $rb$;
82
+
83
+ DO $rb$ BEGIN
84
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_redemptions_pkey' AND conrelid = 'public.coupon_redemptions'::regclass) THEN
85
+ ALTER TABLE ONLY public.coupon_redemptions
86
+ ADD CONSTRAINT coupon_redemptions_pkey PRIMARY KEY (id);
87
+ END IF;
88
+ END $rb$;
89
+
90
+ DO $rb$ BEGIN
91
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupons_pkey' AND conrelid = 'public.coupons'::regclass) THEN
92
+ ALTER TABLE ONLY public.coupons
93
+ ADD CONSTRAINT coupons_pkey PRIMARY KEY (id);
94
+ END IF;
95
+ END $rb$;
96
+
97
+ DO $rb$ BEGIN
98
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'currencies_code_key' AND conrelid = 'public.currencies'::regclass) THEN
99
+ ALTER TABLE ONLY public.currencies
100
+ ADD CONSTRAINT currencies_code_key UNIQUE (code);
101
+ END IF;
102
+ END $rb$;
103
+
104
+ DO $rb$ BEGIN
105
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'currencies_pkey' AND conrelid = 'public.currencies'::regclass) THEN
106
+ ALTER TABLE ONLY public.currencies
107
+ ADD CONSTRAINT currencies_pkey PRIMARY KEY (id);
108
+ END IF;
109
+ END $rb$;
110
+
111
+ DO $rb$ BEGIN
112
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'custom_block_definitions_pkey' AND conrelid = 'public.custom_block_definitions'::regclass) THEN
113
+ ALTER TABLE ONLY public.custom_block_definitions
114
+ ADD CONSTRAINT custom_block_definitions_pkey PRIMARY KEY (id);
115
+ END IF;
116
+ END $rb$;
117
+
118
+ DO $rb$ BEGIN
119
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'custom_block_definitions_slug_key' AND conrelid = 'public.custom_block_definitions'::regclass) THEN
120
+ ALTER TABLE ONLY public.custom_block_definitions
121
+ ADD CONSTRAINT custom_block_definitions_slug_key UNIQUE (slug);
122
+ END IF;
123
+ END $rb$;
124
+
125
+ DO $rb$ BEGIN
126
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'email_2fa_challenges_pkey' AND conrelid = 'public.email_2fa_challenges'::regclass) THEN
127
+ ALTER TABLE ONLY public.email_2fa_challenges
128
+ ADD CONSTRAINT email_2fa_challenges_pkey PRIMARY KEY (id);
129
+ END IF;
130
+ END $rb$;
131
+
132
+ DO $rb$ BEGIN
133
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'form_endpoints_pkey' AND conrelid = 'public.form_endpoints'::regclass) THEN
134
+ ALTER TABLE ONLY public.form_endpoints
135
+ ADD CONSTRAINT form_endpoints_pkey PRIMARY KEY (form_key);
136
+ END IF;
137
+ END $rb$;
138
+
139
+ DO $rb$ BEGIN
140
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'freemius_plans_pkey' AND conrelid = 'public.freemius_plans'::regclass) THEN
141
+ ALTER TABLE ONLY public.freemius_plans
142
+ ADD CONSTRAINT freemius_plans_pkey PRIMARY KEY (id);
143
+ END IF;
144
+ END $rb$;
145
+
146
+ DO $rb$ BEGIN
147
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'freemius_pricing_pkey' AND conrelid = 'public.freemius_pricing'::regclass) THEN
148
+ ALTER TABLE ONLY public.freemius_pricing
149
+ ADD CONSTRAINT freemius_pricing_pkey PRIMARY KEY (id);
150
+ END IF;
151
+ END $rb$;
152
+
153
+ DO $rb$ BEGIN
154
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'inventory_items_pkey' AND conrelid = 'public.inventory_items'::regclass) THEN
155
+ ALTER TABLE ONLY public.inventory_items
156
+ ADD CONSTRAINT inventory_items_pkey PRIMARY KEY (sku);
157
+ END IF;
158
+ END $rb$;
159
+
160
+ DO $rb$ BEGIN
161
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'languages_code_key' AND conrelid = 'public.languages'::regclass) THEN
162
+ ALTER TABLE ONLY public.languages
163
+ ADD CONSTRAINT languages_code_key UNIQUE (code);
164
+ END IF;
165
+ END $rb$;
166
+
167
+ DO $rb$ BEGIN
168
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'languages_pkey' AND conrelid = 'public.languages'::regclass) THEN
169
+ ALTER TABLE ONLY public.languages
170
+ ADD CONSTRAINT languages_pkey PRIMARY KEY (id);
171
+ END IF;
172
+ END $rb$;
173
+
174
+ DO $rb$ BEGIN
175
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'logos_pkey' AND conrelid = 'public.logos'::regclass) THEN
176
+ ALTER TABLE ONLY public.logos
177
+ ADD CONSTRAINT logos_pkey PRIMARY KEY (id);
178
+ END IF;
179
+ END $rb$;
180
+
181
+ DO $rb$ BEGIN
182
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_access_tokens_pkey' AND conrelid = 'public.mcp_access_tokens'::regclass) THEN
183
+ ALTER TABLE ONLY public.mcp_access_tokens
184
+ ADD CONSTRAINT mcp_access_tokens_pkey PRIMARY KEY (id);
185
+ END IF;
186
+ END $rb$;
187
+
188
+ DO $rb$ BEGIN
189
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_access_tokens_token_hash_key' AND conrelid = 'public.mcp_access_tokens'::regclass) THEN
190
+ ALTER TABLE ONLY public.mcp_access_tokens
191
+ ADD CONSTRAINT mcp_access_tokens_token_hash_key UNIQUE (token_hash);
192
+ END IF;
193
+ END $rb$;
194
+
195
+ DO $rb$ BEGIN
196
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'media_object_key_key' AND conrelid = 'public.media'::regclass) THEN
197
+ ALTER TABLE ONLY public.media
198
+ ADD CONSTRAINT media_object_key_key UNIQUE (object_key);
199
+ END IF;
200
+ END $rb$;
201
+
202
+ DO $rb$ BEGIN
203
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'media_pkey' AND conrelid = 'public.media'::regclass) THEN
204
+ ALTER TABLE ONLY public.media
205
+ ADD CONSTRAINT media_pkey PRIMARY KEY (id);
206
+ END IF;
207
+ END $rb$;
208
+
209
+ DO $rb$ BEGIN
210
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'message_threads_pkey' AND conrelid = 'public.message_threads'::regclass) THEN
211
+ ALTER TABLE ONLY public.message_threads
212
+ ADD CONSTRAINT message_threads_pkey PRIMARY KEY (id);
213
+ END IF;
214
+ END $rb$;
215
+
216
+ DO $rb$ BEGIN
217
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'message_threads_token_hash_key' AND conrelid = 'public.message_threads'::regclass) THEN
218
+ ALTER TABLE ONLY public.message_threads
219
+ ADD CONSTRAINT message_threads_token_hash_key UNIQUE (token_hash);
220
+ END IF;
221
+ END $rb$;
222
+
223
+ DO $rb$ BEGIN
224
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'navigation_items_pkey' AND conrelid = 'public.navigation_items'::regclass) THEN
225
+ ALTER TABLE ONLY public.navigation_items
226
+ ADD CONSTRAINT navigation_items_pkey PRIMARY KEY (id);
227
+ END IF;
228
+ END $rb$;
229
+
230
+ DO $rb$ BEGIN
231
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'order_items_pkey' AND conrelid = 'public.order_items'::regclass) THEN
232
+ ALTER TABLE ONLY public.order_items
233
+ ADD CONSTRAINT order_items_pkey PRIMARY KEY (id);
234
+ END IF;
235
+ END $rb$;
236
+
237
+ DO $rb$ BEGIN
238
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'orders_pkey' AND conrelid = 'public.orders'::regclass) THEN
239
+ ALTER TABLE ONLY public.orders
240
+ ADD CONSTRAINT orders_pkey PRIMARY KEY (id);
241
+ END IF;
242
+ END $rb$;
243
+
244
+ DO $rb$ BEGIN
245
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'orders_stripe_session_id_key' AND conrelid = 'public.orders'::regclass) THEN
246
+ ALTER TABLE ONLY public.orders
247
+ ADD CONSTRAINT orders_stripe_session_id_key UNIQUE (stripe_session_id);
248
+ END IF;
249
+ END $rb$;
250
+
251
+ DO $rb$ BEGIN
252
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'package_activations_license_key_package_id_key' AND conrelid = 'public.package_activations'::regclass) THEN
253
+ ALTER TABLE ONLY public.package_activations
254
+ ADD CONSTRAINT package_activations_license_key_package_id_key UNIQUE (license_key, package_id);
255
+ END IF;
256
+ END $rb$;
257
+
258
+ DO $rb$ BEGIN
259
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'package_activations_pkey' AND conrelid = 'public.package_activations'::regclass) THEN
260
+ ALTER TABLE ONLY public.package_activations
261
+ ADD CONSTRAINT package_activations_pkey PRIMARY KEY (id);
262
+ END IF;
263
+ END $rb$;
264
+
265
+ DO $rb$ BEGIN
266
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'page_revisions_page_version_key' AND conrelid = 'public.page_revisions'::regclass) THEN
267
+ ALTER TABLE ONLY public.page_revisions
268
+ ADD CONSTRAINT page_revisions_page_version_key UNIQUE (page_id, version);
269
+ END IF;
270
+ END $rb$;
271
+
272
+ DO $rb$ BEGIN
273
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'page_revisions_pkey' AND conrelid = 'public.page_revisions'::regclass) THEN
274
+ ALTER TABLE ONLY public.page_revisions
275
+ ADD CONSTRAINT page_revisions_pkey PRIMARY KEY (id);
276
+ END IF;
277
+ END $rb$;
278
+
279
+ DO $rb$ BEGIN
280
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'pages_language_id_slug_key' AND conrelid = 'public.pages'::regclass) THEN
281
+ ALTER TABLE ONLY public.pages
282
+ ADD CONSTRAINT pages_language_id_slug_key UNIQUE (language_id, slug);
283
+ END IF;
284
+ END $rb$;
285
+
286
+ DO $rb$ BEGIN
287
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'pages_pkey' AND conrelid = 'public.pages'::regclass) THEN
288
+ ALTER TABLE ONLY public.pages
289
+ ADD CONSTRAINT pages_pkey PRIMARY KEY (id);
290
+ END IF;
291
+ END $rb$;
292
+
293
+ DO $rb$ BEGIN
294
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'post_revisions_pkey' AND conrelid = 'public.post_revisions'::regclass) THEN
295
+ ALTER TABLE ONLY public.post_revisions
296
+ ADD CONSTRAINT post_revisions_pkey PRIMARY KEY (id);
297
+ END IF;
298
+ END $rb$;
299
+
300
+ DO $rb$ BEGIN
301
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'post_revisions_post_version_key' AND conrelid = 'public.post_revisions'::regclass) THEN
302
+ ALTER TABLE ONLY public.post_revisions
303
+ ADD CONSTRAINT post_revisions_post_version_key UNIQUE (post_id, version);
304
+ END IF;
305
+ END $rb$;
306
+
307
+ DO $rb$ BEGIN
308
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'posts_language_id_slug_key' AND conrelid = 'public.posts'::regclass) THEN
309
+ ALTER TABLE ONLY public.posts
310
+ ADD CONSTRAINT posts_language_id_slug_key UNIQUE (language_id, slug);
311
+ END IF;
312
+ END $rb$;
313
+
314
+ DO $rb$ BEGIN
315
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'posts_pkey' AND conrelid = 'public.posts'::regclass) THEN
316
+ ALTER TABLE ONLY public.posts
317
+ ADD CONSTRAINT posts_pkey PRIMARY KEY (id);
318
+ END IF;
319
+ END $rb$;
320
+
321
+ DO $rb$ BEGIN
322
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'privacy_consent_logs_consent_token_key' AND conrelid = 'public.privacy_consent_logs'::regclass) THEN
323
+ ALTER TABLE ONLY public.privacy_consent_logs
324
+ ADD CONSTRAINT privacy_consent_logs_consent_token_key UNIQUE (consent_token);
325
+ END IF;
326
+ END $rb$;
327
+
328
+ DO $rb$ BEGIN
329
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'privacy_consent_logs_pkey' AND conrelid = 'public.privacy_consent_logs'::regclass) THEN
330
+ ALTER TABLE ONLY public.privacy_consent_logs
331
+ ADD CONSTRAINT privacy_consent_logs_pkey PRIMARY KEY (id);
332
+ END IF;
333
+ END $rb$;
334
+
335
+ DO $rb$ BEGIN
336
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_attribute_terms_attribute_id_slug_key' AND conrelid = 'public.product_attribute_terms'::regclass) THEN
337
+ ALTER TABLE ONLY public.product_attribute_terms
338
+ ADD CONSTRAINT product_attribute_terms_attribute_id_slug_key UNIQUE (attribute_id, slug);
339
+ END IF;
340
+ END $rb$;
341
+
342
+ DO $rb$ BEGIN
343
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_attribute_terms_pkey' AND conrelid = 'public.product_attribute_terms'::regclass) THEN
344
+ ALTER TABLE ONLY public.product_attribute_terms
345
+ ADD CONSTRAINT product_attribute_terms_pkey PRIMARY KEY (id);
346
+ END IF;
347
+ END $rb$;
348
+
349
+ DO $rb$ BEGIN
350
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_attributes_pkey' AND conrelid = 'public.product_attributes'::regclass) THEN
351
+ ALTER TABLE ONLY public.product_attributes
352
+ ADD CONSTRAINT product_attributes_pkey PRIMARY KEY (id);
353
+ END IF;
354
+ END $rb$;
355
+
356
+ DO $rb$ BEGIN
357
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_attributes_slug_key' AND conrelid = 'public.product_attributes'::regclass) THEN
358
+ ALTER TABLE ONLY public.product_attributes
359
+ ADD CONSTRAINT product_attributes_slug_key UNIQUE (slug);
360
+ END IF;
361
+ END $rb$;
362
+
363
+ DO $rb$ BEGIN
364
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_categories_pkey' AND conrelid = 'public.product_categories'::regclass) THEN
365
+ ALTER TABLE ONLY public.product_categories
366
+ ADD CONSTRAINT product_categories_pkey PRIMARY KEY (product_id, category_id);
367
+ END IF;
368
+ END $rb$;
369
+
370
+ DO $rb$ BEGIN
371
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_drafts_pkey' AND conrelid = 'public.product_drafts'::regclass) THEN
372
+ ALTER TABLE ONLY public.product_drafts
373
+ ADD CONSTRAINT product_drafts_pkey PRIMARY KEY (id);
374
+ END IF;
375
+ END $rb$;
376
+
377
+ DO $rb$ BEGIN
378
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_drafts_product_unique' AND conrelid = 'public.product_drafts'::regclass) THEN
379
+ ALTER TABLE ONLY public.product_drafts
380
+ ADD CONSTRAINT product_drafts_product_unique UNIQUE (product_id);
381
+ END IF;
382
+ END $rb$;
383
+
384
+ DO $rb$ BEGIN
385
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_freemius_sale_coupons_pkey' AND conrelid = 'public.product_freemius_sale_coupons'::regclass) THEN
386
+ ALTER TABLE ONLY public.product_freemius_sale_coupons
387
+ ADD CONSTRAINT product_freemius_sale_coupons_pkey PRIMARY KEY (id);
388
+ END IF;
389
+ END $rb$;
390
+
391
+ DO $rb$ BEGIN
392
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_freemius_sale_coupons_product_unique' AND conrelid = 'public.product_freemius_sale_coupons'::regclass) THEN
393
+ ALTER TABLE ONLY public.product_freemius_sale_coupons
394
+ ADD CONSTRAINT product_freemius_sale_coupons_product_unique UNIQUE (product_id);
395
+ END IF;
396
+ END $rb$;
397
+
398
+ DO $rb$ BEGIN
399
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_inquiries_pkey' AND conrelid = 'public.product_inquiries'::regclass) THEN
400
+ ALTER TABLE ONLY public.product_inquiries
401
+ ADD CONSTRAINT product_inquiries_pkey PRIMARY KEY (id);
402
+ END IF;
403
+ END $rb$;
404
+
405
+ DO $rb$ BEGIN
406
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_media_pkey' AND conrelid = 'public.product_media'::regclass) THEN
407
+ ALTER TABLE ONLY public.product_media
408
+ ADD CONSTRAINT product_media_pkey PRIMARY KEY (product_id, media_id);
409
+ END IF;
410
+ END $rb$;
411
+
412
+ DO $rb$ BEGIN
413
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_revisions_pkey' AND conrelid = 'public.product_revisions'::regclass) THEN
414
+ ALTER TABLE ONLY public.product_revisions
415
+ ADD CONSTRAINT product_revisions_pkey PRIMARY KEY (id);
416
+ END IF;
417
+ END $rb$;
418
+
419
+ DO $rb$ BEGIN
420
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_revisions_product_version_key' AND conrelid = 'public.product_revisions'::regclass) THEN
421
+ ALTER TABLE ONLY public.product_revisions
422
+ ADD CONSTRAINT product_revisions_product_version_key UNIQUE (product_id, version);
423
+ END IF;
424
+ END $rb$;
425
+
426
+ DO $rb$ BEGIN
427
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_variants_pkey' AND conrelid = 'public.product_variants'::regclass) THEN
428
+ ALTER TABLE ONLY public.product_variants
429
+ ADD CONSTRAINT product_variants_pkey PRIMARY KEY (id);
430
+ END IF;
431
+ END $rb$;
432
+
433
+ DO $rb$ BEGIN
434
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_variants_product_id_sku_key' AND conrelid = 'public.product_variants'::regclass) THEN
435
+ ALTER TABLE ONLY public.product_variants
436
+ ADD CONSTRAINT product_variants_product_id_sku_key UNIQUE (product_id, sku);
437
+ END IF;
438
+ END $rb$;
439
+
440
+ DO $rb$ BEGIN
441
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'products_language_id_sku_key' AND conrelid = 'public.products'::regclass) THEN
442
+ ALTER TABLE ONLY public.products
443
+ ADD CONSTRAINT products_language_id_sku_key UNIQUE (language_id, sku);
444
+ END IF;
445
+ END $rb$;
446
+
447
+ DO $rb$ BEGIN
448
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'products_language_id_slug_key' AND conrelid = 'public.products'::regclass) THEN
449
+ ALTER TABLE ONLY public.products
450
+ ADD CONSTRAINT products_language_id_slug_key UNIQUE (language_id, slug);
451
+ END IF;
452
+ END $rb$;
453
+
454
+ DO $rb$ BEGIN
455
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'products_pkey' AND conrelid = 'public.products'::regclass) THEN
456
+ ALTER TABLE ONLY public.products
457
+ ADD CONSTRAINT products_pkey PRIMARY KEY (id);
458
+ END IF;
459
+ END $rb$;
460
+
461
+ DO $rb$ BEGIN
462
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'profiles_pkey' AND conrelid = 'public.profiles'::regclass) THEN
463
+ ALTER TABLE ONLY public.profiles
464
+ ADD CONSTRAINT profiles_pkey PRIMARY KEY (id);
465
+ END IF;
466
+ END $rb$;
467
+
468
+ DO $rb$ BEGIN
469
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'shipping_zone_locations_pkey' AND conrelid = 'public.shipping_zone_locations'::regclass) THEN
470
+ ALTER TABLE ONLY public.shipping_zone_locations
471
+ ADD CONSTRAINT shipping_zone_locations_pkey PRIMARY KEY (id);
472
+ END IF;
473
+ END $rb$;
474
+
475
+ DO $rb$ BEGIN
476
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'shipping_zone_methods_pkey' AND conrelid = 'public.shipping_zone_methods'::regclass) THEN
477
+ ALTER TABLE ONLY public.shipping_zone_methods
478
+ ADD CONSTRAINT shipping_zone_methods_pkey PRIMARY KEY (id);
479
+ END IF;
480
+ END $rb$;
481
+
482
+ DO $rb$ BEGIN
483
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'shipping_zones_pkey' AND conrelid = 'public.shipping_zones'::regclass) THEN
484
+ ALTER TABLE ONLY public.shipping_zones
485
+ ADD CONSTRAINT shipping_zones_pkey PRIMARY KEY (id);
486
+ END IF;
487
+ END $rb$;
488
+
489
+ DO $rb$ BEGIN
490
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'site_script_revisions_pkey' AND conrelid = 'public.site_script_revisions'::regclass) THEN
491
+ ALTER TABLE ONLY public.site_script_revisions
492
+ ADD CONSTRAINT site_script_revisions_pkey PRIMARY KEY (id);
493
+ END IF;
494
+ END $rb$;
495
+
496
+ DO $rb$ BEGIN
497
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'site_scripts_pkey' AND conrelid = 'public.site_scripts'::regclass) THEN
498
+ ALTER TABLE ONLY public.site_scripts
499
+ ADD CONSTRAINT site_scripts_pkey PRIMARY KEY (id);
500
+ END IF;
501
+ END $rb$;
502
+
503
+ DO $rb$ BEGIN
504
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'site_settings_pkey' AND conrelid = 'public.site_settings'::regclass) THEN
505
+ ALTER TABLE ONLY public.site_settings
506
+ ADD CONSTRAINT site_settings_pkey PRIMARY KEY (key);
507
+ END IF;
508
+ END $rb$;
509
+
510
+ DO $rb$ BEGIN
511
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'site_themes_pkey' AND conrelid = 'public.site_themes'::regclass) THEN
512
+ ALTER TABLE ONLY public.site_themes
513
+ ADD CONSTRAINT site_themes_pkey PRIMARY KEY (id);
514
+ END IF;
515
+ END $rb$;
516
+
517
+ DO $rb$ BEGIN
518
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'site_themes_slug_key' AND conrelid = 'public.site_themes'::regclass) THEN
519
+ ALTER TABLE ONLY public.site_themes
520
+ ADD CONSTRAINT site_themes_slug_key UNIQUE (slug);
521
+ END IF;
522
+ END $rb$;
523
+
524
+ DO $rb$ BEGIN
525
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'system_alerts_pkey' AND conrelid = 'public.system_alerts'::regclass) THEN
526
+ ALTER TABLE ONLY public.system_alerts
527
+ ADD CONSTRAINT system_alerts_pkey PRIMARY KEY (id);
528
+ END IF;
529
+ END $rb$;
530
+
531
+ DO $rb$ BEGIN
532
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'system_configuration_pkey' AND conrelid = 'public.system_configuration'::regclass) THEN
533
+ ALTER TABLE ONLY public.system_configuration
534
+ ADD CONSTRAINT system_configuration_pkey PRIMARY KEY (id);
535
+ END IF;
536
+ END $rb$;
537
+
538
+ DO $rb$ BEGIN
539
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'tax_rates_pkey' AND conrelid = 'public.tax_rates'::regclass) THEN
540
+ ALTER TABLE ONLY public.tax_rates
541
+ ADD CONSTRAINT tax_rates_pkey PRIMARY KEY (id);
542
+ END IF;
543
+ END $rb$;
544
+
545
+ DO $rb$ BEGIN
546
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'thread_messages_pkey' AND conrelid = 'public.thread_messages'::regclass) THEN
547
+ ALTER TABLE ONLY public.thread_messages
548
+ ADD CONSTRAINT thread_messages_pkey PRIMARY KEY (id);
549
+ END IF;
550
+ END $rb$;
551
+
552
+ DO $rb$ BEGIN
553
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'translations_pkey' AND conrelid = 'public.translations'::regclass) THEN
554
+ ALTER TABLE ONLY public.translations
555
+ ADD CONSTRAINT translations_pkey PRIMARY KEY (key);
556
+ END IF;
557
+ END $rb$;
558
+
559
+ DO $rb$ BEGIN
560
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'ucp_cart_sessions_pkey' AND conrelid = 'public.ucp_cart_sessions'::regclass) THEN
561
+ ALTER TABLE ONLY public.ucp_cart_sessions
562
+ ADD CONSTRAINT ucp_cart_sessions_pkey PRIMARY KEY (id);
563
+ END IF;
564
+ END $rb$;
565
+
566
+ DO $rb$ BEGIN
567
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_addresses_pkey' AND conrelid = 'public.user_addresses'::regclass) THEN
568
+ ALTER TABLE ONLY public.user_addresses
569
+ ADD CONSTRAINT user_addresses_pkey PRIMARY KEY (id);
570
+ END IF;
571
+ END $rb$;
572
+
573
+ DO $rb$ BEGIN
574
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_security_settings_pkey' AND conrelid = 'public.user_security_settings'::regclass) THEN
575
+ ALTER TABLE ONLY public.user_security_settings
576
+ ADD CONSTRAINT user_security_settings_pkey PRIMARY KEY (user_id);
577
+ END IF;
578
+ END $rb$;
579
+
580
+ DO $rb$ BEGIN
581
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_trusted_devices_device_hash_key' AND conrelid = 'public.user_trusted_devices'::regclass) THEN
582
+ ALTER TABLE ONLY public.user_trusted_devices
583
+ ADD CONSTRAINT user_trusted_devices_device_hash_key UNIQUE (device_hash);
584
+ END IF;
585
+ END $rb$;
586
+
587
+ DO $rb$ BEGIN
588
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_trusted_devices_pkey' AND conrelid = 'public.user_trusted_devices'::regclass) THEN
589
+ ALTER TABLE ONLY public.user_trusted_devices
590
+ ADD CONSTRAINT user_trusted_devices_pkey PRIMARY KEY (id);
591
+ END IF;
592
+ END $rb$;
593
+
594
+ DO $rb$ BEGIN
595
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'variant_attribute_mapping_pkey' AND conrelid = 'public.variant_attribute_mapping'::regclass) THEN
596
+ ALTER TABLE ONLY public.variant_attribute_mapping
597
+ ADD CONSTRAINT variant_attribute_mapping_pkey PRIMARY KEY (variant_id, attribute_term_id);
598
+ END IF;
599
+ END $rb$;
600
+
601
+ CREATE INDEX IF NOT EXISTS cms_interactions_inbox_idx ON public.cms_interactions USING btree (created_at DESC) WHERE (parent_id IS NULL);
602
+
603
+ CREATE INDEX IF NOT EXISTS cms_interactions_parent_idx ON public.cms_interactions USING btree (parent_id, created_at) WHERE (parent_id IS NOT NULL);
604
+
605
+ CREATE INDEX IF NOT EXISTS cms_interactions_post_type_status_idx ON public.cms_interactions USING btree (post_id, type, status, created_at DESC) WHERE (post_id IS NOT NULL);
606
+
607
+ CREATE INDEX IF NOT EXISTS cms_interactions_product_type_status_idx ON public.cms_interactions USING btree (product_id, type, status, created_at DESC) WHERE (product_id IS NOT NULL);
608
+
609
+ CREATE INDEX IF NOT EXISTS cms_redirects_active_source_idx ON public.cms_redirects USING btree (source_path) WHERE is_active;
610
+
611
+ CREATE INDEX IF NOT EXISTS content_drafts_author_id_idx ON public.content_drafts USING btree (author_id);
612
+
613
+ CREATE INDEX IF NOT EXISTS content_drafts_parent_idx ON public.content_drafts USING btree (parent_type, parent_id);
614
+
615
+ CREATE INDEX IF NOT EXISTS content_drafts_updated_at_idx ON public.content_drafts USING btree (updated_at DESC);
616
+
617
+ CREATE UNIQUE INDEX IF NOT EXISTS coupon_freemius_mappings_coupon_product_unique ON public.coupon_freemius_mappings USING btree (coupon_id, freemius_product_id);
618
+
619
+ CREATE UNIQUE INDEX IF NOT EXISTS coupon_redemptions_order_unique ON public.coupon_redemptions USING btree (order_id) WHERE (order_id IS NOT NULL);
620
+
621
+ CREATE UNIQUE INDEX IF NOT EXISTS coupons_code_unique ON public.coupons USING btree (upper(code));
622
+
623
+ CREATE UNIQUE INDEX IF NOT EXISTS ensure_single_default_language_idx ON public.languages USING btree (is_default) WHERE (is_default = true);
624
+
625
+ CREATE INDEX IF NOT EXISTS idx_blocks_language_id ON public.blocks USING btree (language_id);
626
+
627
+ CREATE INDEX IF NOT EXISTS idx_blocks_page_id ON public.blocks USING btree (page_id);
628
+
629
+ CREATE INDEX IF NOT EXISTS idx_blocks_post_id ON public.blocks USING btree (post_id);
630
+
631
+ CREATE INDEX IF NOT EXISTS idx_coupon_freemius_mappings_freemius_product_id ON public.coupon_freemius_mappings USING btree (freemius_product_id);
632
+
633
+ CREATE INDEX IF NOT EXISTS idx_coupon_freemius_mappings_product_id ON public.coupon_freemius_mappings USING btree (product_id) WHERE (product_id IS NOT NULL);
634
+
635
+ CREATE INDEX IF NOT EXISTS idx_coupon_products_product_id ON public.coupon_products USING btree (product_id);
636
+
637
+ CREATE INDEX IF NOT EXISTS idx_coupon_redemptions_coupon_id ON public.coupon_redemptions USING btree (coupon_id);
638
+
639
+ CREATE INDEX IF NOT EXISTS idx_coupon_redemptions_user_id ON public.coupon_redemptions USING btree (user_id) WHERE (user_id IS NOT NULL);
640
+
641
+ CREATE INDEX IF NOT EXISTS idx_coupons_active_dates ON public.coupons USING btree (is_active, starts_at, ends_at);
642
+
643
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_currencies_single_default ON public.currencies USING btree (is_default) WHERE (is_default = true);
644
+
645
+ CREATE INDEX IF NOT EXISTS idx_custom_block_definitions_is_original ON public.custom_block_definitions USING btree (is_original);
646
+
647
+ CREATE INDEX IF NOT EXISTS idx_email_2fa_challenges_expires_at ON public.email_2fa_challenges USING btree (expires_at);
648
+
649
+ CREATE INDEX IF NOT EXISTS idx_email_2fa_challenges_user_id ON public.email_2fa_challenges USING btree (user_id);
650
+
651
+ CREATE INDEX IF NOT EXISTS idx_freemius_plans_product_id ON public.freemius_plans USING btree (product_id);
652
+
653
+ CREATE INDEX IF NOT EXISTS idx_freemius_pricing_plan_id ON public.freemius_pricing USING btree (plan_id);
654
+
655
+ CREATE INDEX IF NOT EXISTS idx_inventory_items_updated_at ON public.inventory_items USING btree (updated_at DESC);
656
+
657
+ CREATE INDEX IF NOT EXISTS idx_logos_media_id ON public.logos USING btree (media_id);
658
+
659
+ CREATE INDEX IF NOT EXISTS idx_media_uploader_id ON public.media USING btree (uploader_id);
660
+
661
+ CREATE INDEX IF NOT EXISTS idx_navigation_items_language_id ON public.navigation_items USING btree (language_id);
662
+
663
+ CREATE INDEX IF NOT EXISTS idx_navigation_items_menu_lang_order ON public.navigation_items USING btree (menu_key, language_id, "order");
664
+
665
+ CREATE INDEX IF NOT EXISTS idx_navigation_items_page_id ON public.navigation_items USING btree (page_id);
666
+
667
+ CREATE INDEX IF NOT EXISTS idx_navigation_items_parent_id ON public.navigation_items USING btree (parent_id);
668
+
669
+ CREATE INDEX IF NOT EXISTS idx_order_items_order_id ON public.order_items USING btree (order_id);
670
+
671
+ CREATE INDEX IF NOT EXISTS idx_order_items_product_id ON public.order_items USING btree (product_id);
672
+
673
+ CREATE INDEX IF NOT EXISTS idx_order_items_variant_id ON public.order_items USING btree (variant_id);
674
+
675
+ CREATE INDEX IF NOT EXISTS idx_orders_coupon_id ON public.orders USING btree (coupon_id) WHERE (coupon_id IS NOT NULL);
676
+
677
+ CREATE INDEX IF NOT EXISTS idx_orders_freemius_license_id ON public.orders USING btree (freemius_license_id) WHERE (freemius_license_id IS NOT NULL);
678
+
679
+ CREATE INDEX IF NOT EXISTS idx_orders_freemius_subscription_id ON public.orders USING btree (freemius_subscription_id) WHERE (freemius_subscription_id IS NOT NULL);
680
+
681
+ CREATE INDEX IF NOT EXISTS idx_orders_freemius_trial_id ON public.orders USING btree (freemius_trial_id) WHERE (freemius_trial_id IS NOT NULL);
682
+
683
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_orders_invoice_number_unique ON public.orders USING btree (invoice_number) WHERE (invoice_number IS NOT NULL);
684
+
685
+ CREATE INDEX IF NOT EXISTS idx_orders_user_id ON public.orders USING btree (user_id);
686
+
687
+ CREATE INDEX IF NOT EXISTS idx_package_activations_license_key ON public.package_activations USING btree (license_key);
688
+
689
+ CREATE INDEX IF NOT EXISTS idx_package_activations_package_id ON public.package_activations USING btree (package_id);
690
+
691
+ CREATE INDEX IF NOT EXISTS idx_page_revisions_author_id ON public.page_revisions USING btree (author_id);
692
+
693
+ CREATE INDEX IF NOT EXISTS idx_page_revisions_page_id_version ON public.page_revisions USING btree (page_id, version);
694
+
695
+ CREATE INDEX IF NOT EXISTS idx_pages_author_id ON public.pages USING btree (author_id);
696
+
697
+ CREATE INDEX IF NOT EXISTS idx_pages_feature_image_id ON public.pages USING btree (feature_image_id);
698
+
699
+ CREATE INDEX IF NOT EXISTS idx_pages_translation_group_id ON public.pages USING btree (translation_group_id);
700
+
701
+ CREATE INDEX IF NOT EXISTS idx_post_revisions_author_id ON public.post_revisions USING btree (author_id);
702
+
703
+ CREATE INDEX IF NOT EXISTS idx_post_revisions_post_id_version ON public.post_revisions USING btree (post_id, version);
704
+
705
+ CREATE INDEX IF NOT EXISTS idx_posts_author_id ON public.posts USING btree (author_id);
706
+
707
+ CREATE INDEX IF NOT EXISTS idx_posts_feature_image_id ON public.posts USING btree (feature_image_id);
708
+
709
+ CREATE INDEX IF NOT EXISTS idx_posts_translation_group_id ON public.posts USING btree (translation_group_id);
710
+
711
+ CREATE INDEX IF NOT EXISTS idx_privacy_consent_logs_created_at ON public.privacy_consent_logs USING btree (created_at DESC);
712
+
713
+ CREATE INDEX IF NOT EXISTS idx_product_attribute_terms_attribute_id ON public.product_attribute_terms USING btree (attribute_id);
714
+
715
+ CREATE INDEX IF NOT EXISTS idx_product_categories_category_id ON public.product_categories USING btree (category_id);
716
+
717
+ CREATE INDEX IF NOT EXISTS idx_product_categories_product_id ON public.product_categories USING btree (product_id);
718
+
719
+ CREATE INDEX IF NOT EXISTS idx_product_freemius_sale_coupons_freemius_product_id ON public.product_freemius_sale_coupons USING btree (freemius_product_id);
720
+
721
+ CREATE INDEX IF NOT EXISTS idx_product_media_media_id ON public.product_media USING btree (media_id);
722
+
723
+ CREATE INDEX IF NOT EXISTS idx_product_media_product_id ON public.product_media USING btree (product_id);
724
+
725
+ CREATE INDEX IF NOT EXISTS idx_product_revisions_author_id ON public.product_revisions USING btree (author_id);
726
+
727
+ CREATE INDEX IF NOT EXISTS idx_product_revisions_product_id_version ON public.product_revisions USING btree (product_id, version);
728
+
729
+ CREATE INDEX IF NOT EXISTS idx_product_variants_main_media_id ON public.product_variants USING btree (main_media_id);
730
+
731
+ CREATE INDEX IF NOT EXISTS idx_product_variants_prices_gin ON public.product_variants USING gin (prices jsonb_path_ops);
732
+
733
+ CREATE INDEX IF NOT EXISTS idx_product_variants_product_id ON public.product_variants USING btree (product_id);
734
+
735
+ CREATE INDEX IF NOT EXISTS idx_products_prices_gin ON public.products USING gin (prices jsonb_path_ops);
736
+
737
+ CREATE INDEX IF NOT EXISTS idx_products_slug ON public.products USING btree (slug);
738
+
739
+ CREATE INDEX IF NOT EXISTS idx_products_translation_group_id ON public.products USING btree (translation_group_id);
740
+
741
+ CREATE INDEX IF NOT EXISTS idx_shipping_zone_locations_country_state_postal ON public.shipping_zone_locations USING btree (country_code, state_code, postal_code);
742
+
743
+ CREATE INDEX IF NOT EXISTS idx_shipping_zone_locations_zone_id ON public.shipping_zone_locations USING btree (zone_id);
744
+
745
+ CREATE INDEX IF NOT EXISTS idx_shipping_zone_methods_name_translations ON public.shipping_zone_methods USING gin (name_translations);
746
+
747
+ CREATE INDEX IF NOT EXISTS idx_shipping_zone_methods_zone_id ON public.shipping_zone_methods USING btree (zone_id);
748
+
749
+ CREATE INDEX IF NOT EXISTS idx_system_alerts_unresolved ON public.system_alerts USING btree (is_resolved, created_at DESC);
750
+
751
+ CREATE INDEX IF NOT EXISTS idx_tax_rates_country_state ON public.tax_rates USING btree (country_code, state_code);
752
+
753
+ CREATE INDEX IF NOT EXISTS idx_ucp_cart_sessions_created_at ON public.ucp_cart_sessions USING btree (created_at DESC);
754
+
755
+ CREATE INDEX IF NOT EXISTS idx_ucp_cart_sessions_status_expires_at ON public.ucp_cart_sessions USING btree (status, expires_at);
756
+
757
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_user_addresses_one_default_per_type ON public.user_addresses USING btree (user_id, address_type) WHERE (is_default = true);
758
+
759
+ CREATE INDEX IF NOT EXISTS idx_user_addresses_type ON public.user_addresses USING btree (address_type);
760
+
761
+ CREATE INDEX IF NOT EXISTS idx_user_addresses_user_id ON public.user_addresses USING btree (user_id);
762
+
763
+ CREATE INDEX IF NOT EXISTS idx_user_trusted_devices_expires_at ON public.user_trusted_devices USING btree (expires_at);
764
+
765
+ CREATE INDEX IF NOT EXISTS idx_user_trusted_devices_user_id ON public.user_trusted_devices USING btree (user_id);
766
+
767
+ CREATE INDEX IF NOT EXISTS idx_variant_attribute_mapping_attribute_term_id ON public.variant_attribute_mapping USING btree (attribute_term_id);
768
+
769
+ CREATE INDEX IF NOT EXISTS mcp_access_tokens_created_at_idx ON public.mcp_access_tokens USING btree (created_at DESC);
770
+
771
+ CREATE INDEX IF NOT EXISTS mcp_access_tokens_token_hash_idx ON public.mcp_access_tokens USING btree (token_hash);
772
+
773
+ CREATE INDEX IF NOT EXISTS media_folder_idx ON public.media USING btree (folder);
774
+
775
+ CREATE INDEX IF NOT EXISTS message_threads_last_message_idx ON public.message_threads USING btree (last_message_at DESC);
776
+
777
+ CREATE INDEX IF NOT EXISTS message_threads_source_last_idx ON public.message_threads USING btree (source, last_message_at DESC);
778
+
779
+ CREATE INDEX IF NOT EXISTS message_threads_subject_idx ON public.message_threads USING btree (subject_id) WHERE (subject_id IS NOT NULL);
780
+
781
+ CREATE INDEX IF NOT EXISTS message_threads_unread_idx ON public.message_threads USING btree (last_message_at DESC) WHERE (unread_for_admin = true);
782
+
783
+ CREATE INDEX IF NOT EXISTS pages_status_published_at_idx ON public.pages USING btree (status, published_at);
784
+
785
+ CREATE INDEX IF NOT EXISTS product_drafts_author_id_idx ON public.product_drafts USING btree (author_id);
786
+
787
+ CREATE INDEX IF NOT EXISTS product_drafts_product_id_idx ON public.product_drafts USING btree (product_id);
788
+
789
+ CREATE INDEX IF NOT EXISTS product_drafts_updated_at_idx ON public.product_drafts USING btree (updated_at DESC);
790
+
791
+ CREATE INDEX IF NOT EXISTS product_inquiries_created_idx ON public.product_inquiries USING btree (created_at DESC);
792
+
793
+ CREATE INDEX IF NOT EXISTS product_inquiries_ip_created_idx ON public.product_inquiries USING btree (ip_masked, created_at DESC);
794
+
795
+ CREATE INDEX IF NOT EXISTS product_inquiries_unresolved_idx ON public.product_inquiries USING btree (created_at DESC) WHERE (is_resolved = false);
796
+
797
+ CREATE INDEX IF NOT EXISTS product_variants_sale_window_idx ON public.product_variants USING btree (sale_start_at, sale_end_at) WHERE ((sale_start_at IS NOT NULL) OR (sale_end_at IS NOT NULL));
798
+
799
+ CREATE INDEX IF NOT EXISTS product_variants_scheduled_price_idx ON public.product_variants USING btree (scheduled_price_at) WHERE (scheduled_price_at IS NOT NULL);
800
+
801
+ CREATE INDEX IF NOT EXISTS products_sale_window_idx ON public.products USING btree (sale_start_at, sale_end_at) WHERE ((sale_start_at IS NOT NULL) OR (sale_end_at IS NOT NULL));
802
+
803
+ CREATE INDEX IF NOT EXISTS products_scheduled_price_idx ON public.products USING btree (scheduled_price_at) WHERE (scheduled_price_at IS NOT NULL);
804
+
805
+ CREATE INDEX IF NOT EXISTS products_status_published_at_idx ON public.products USING btree (status, published_at);
806
+
807
+ CREATE INDEX IF NOT EXISTS site_script_revisions_created_idx ON public.site_script_revisions USING btree (created_at DESC);
808
+
809
+ CREATE INDEX IF NOT EXISTS site_script_revisions_script_created_idx ON public.site_script_revisions USING btree (script_id, created_at DESC);
810
+
811
+ CREATE INDEX IF NOT EXISTS site_scripts_active_placement_sort_idx ON public.site_scripts USING btree (is_active, placement, sort_order);
812
+
813
+ CREATE INDEX IF NOT EXISTS site_themes_active_sort_idx ON public.site_themes USING btree (is_active, sort_order);
814
+
815
+ CREATE UNIQUE INDEX IF NOT EXISTS site_themes_single_default_idx ON public.site_themes USING btree (is_default) WHERE (is_default = true);
816
+
817
+ CREATE UNIQUE INDEX IF NOT EXISTS tax_rates_country_state_name_key ON public.tax_rates USING btree (country_code, COALESCE(state_code, ''::text), lower(tax_name));
818
+
819
+ CREATE INDEX IF NOT EXISTS thread_messages_ip_created_idx ON public.thread_messages USING btree (ip_masked, created_at DESC);
820
+
821
+ CREATE INDEX IF NOT EXISTS thread_messages_thread_created_idx ON public.thread_messages USING btree (thread_id, created_at);
822
+
823
+ DO $rb$ BEGIN
824
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'blocks_language_id_fkey' AND conrelid = 'public.blocks'::regclass) THEN
825
+ ALTER TABLE ONLY public.blocks
826
+ ADD CONSTRAINT blocks_language_id_fkey FOREIGN KEY (language_id) REFERENCES public.languages(id) ON DELETE CASCADE;
827
+ END IF;
828
+ END $rb$;
829
+
830
+ DO $rb$ BEGIN
831
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'blocks_page_id_fkey' AND conrelid = 'public.blocks'::regclass) THEN
832
+ ALTER TABLE ONLY public.blocks
833
+ ADD CONSTRAINT blocks_page_id_fkey FOREIGN KEY (page_id) REFERENCES public.pages(id) ON DELETE CASCADE;
834
+ END IF;
835
+ END $rb$;
836
+
837
+ DO $rb$ BEGIN
838
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'blocks_post_id_fkey' AND conrelid = 'public.blocks'::regclass) THEN
839
+ ALTER TABLE ONLY public.blocks
840
+ ADD CONSTRAINT blocks_post_id_fkey FOREIGN KEY (post_id) REFERENCES public.posts(id) ON DELETE CASCADE;
841
+ END IF;
842
+ END $rb$;
843
+
844
+ DO $rb$ BEGIN
845
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'blocks_product_id_fkey' AND conrelid = 'public.blocks'::regclass) THEN
846
+ ALTER TABLE ONLY public.blocks
847
+ ADD CONSTRAINT blocks_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
848
+ END IF;
849
+ END $rb$;
850
+
851
+ DO $rb$ BEGIN
852
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cms_interactions_parent_id_fkey' AND conrelid = 'public.cms_interactions'::regclass) THEN
853
+ ALTER TABLE ONLY public.cms_interactions
854
+ ADD CONSTRAINT cms_interactions_parent_id_fkey FOREIGN KEY (parent_id) REFERENCES public.cms_interactions(id) ON DELETE CASCADE;
855
+ END IF;
856
+ END $rb$;
857
+
858
+ DO $rb$ BEGIN
859
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cms_interactions_post_id_fkey' AND conrelid = 'public.cms_interactions'::regclass) THEN
860
+ ALTER TABLE ONLY public.cms_interactions
861
+ ADD CONSTRAINT cms_interactions_post_id_fkey FOREIGN KEY (post_id) REFERENCES public.posts(id) ON DELETE CASCADE;
862
+ END IF;
863
+ END $rb$;
864
+
865
+ DO $rb$ BEGIN
866
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cms_interactions_product_id_fkey' AND conrelid = 'public.cms_interactions'::regclass) THEN
867
+ ALTER TABLE ONLY public.cms_interactions
868
+ ADD CONSTRAINT cms_interactions_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
869
+ END IF;
870
+ END $rb$;
871
+
872
+ DO $rb$ BEGIN
873
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cms_interactions_user_id_profiles_fkey' AND conrelid = 'public.cms_interactions'::regclass) THEN
874
+ ALTER TABLE ONLY public.cms_interactions
875
+ ADD CONSTRAINT cms_interactions_user_id_profiles_fkey FOREIGN KEY (user_id) REFERENCES public.profiles(id) ON DELETE CASCADE;
876
+ END IF;
877
+ END $rb$;
878
+
879
+ DO $rb$ BEGIN
880
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'content_drafts_author_id_fkey' AND conrelid = 'public.content_drafts'::regclass) THEN
881
+ ALTER TABLE ONLY public.content_drafts
882
+ ADD CONSTRAINT content_drafts_author_id_fkey FOREIGN KEY (author_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
883
+ END IF;
884
+ END $rb$;
885
+
886
+ DO $rb$ BEGIN
887
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cortex_ai_db_mutation_audit_actor_user_id_fkey' AND conrelid = 'public.cortex_ai_db_mutation_audit'::regclass) THEN
888
+ ALTER TABLE ONLY public.cortex_ai_db_mutation_audit
889
+ ADD CONSTRAINT cortex_ai_db_mutation_audit_actor_user_id_fkey FOREIGN KEY (actor_user_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
890
+ END IF;
891
+ END $rb$;
892
+
893
+ DO $rb$ BEGIN
894
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_freemius_mappings_coupon_id_fkey' AND conrelid = 'public.coupon_freemius_mappings'::regclass) THEN
895
+ ALTER TABLE ONLY public.coupon_freemius_mappings
896
+ ADD CONSTRAINT coupon_freemius_mappings_coupon_id_fkey FOREIGN KEY (coupon_id) REFERENCES public.coupons(id) ON DELETE CASCADE;
897
+ END IF;
898
+ END $rb$;
899
+
900
+ DO $rb$ BEGIN
901
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_freemius_mappings_product_id_fkey' AND conrelid = 'public.coupon_freemius_mappings'::regclass) THEN
902
+ ALTER TABLE ONLY public.coupon_freemius_mappings
903
+ ADD CONSTRAINT coupon_freemius_mappings_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE SET NULL;
904
+ END IF;
905
+ END $rb$;
906
+
907
+ DO $rb$ BEGIN
908
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_products_coupon_id_fkey' AND conrelid = 'public.coupon_products'::regclass) THEN
909
+ ALTER TABLE ONLY public.coupon_products
910
+ ADD CONSTRAINT coupon_products_coupon_id_fkey FOREIGN KEY (coupon_id) REFERENCES public.coupons(id) ON DELETE CASCADE;
911
+ END IF;
912
+ END $rb$;
913
+
914
+ DO $rb$ BEGIN
915
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_products_product_id_fkey' AND conrelid = 'public.coupon_products'::regclass) THEN
916
+ ALTER TABLE ONLY public.coupon_products
917
+ ADD CONSTRAINT coupon_products_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
918
+ END IF;
919
+ END $rb$;
920
+
921
+ DO $rb$ BEGIN
922
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_redemptions_coupon_id_fkey' AND conrelid = 'public.coupon_redemptions'::regclass) THEN
923
+ ALTER TABLE ONLY public.coupon_redemptions
924
+ ADD CONSTRAINT coupon_redemptions_coupon_id_fkey FOREIGN KEY (coupon_id) REFERENCES public.coupons(id) ON DELETE SET NULL;
925
+ END IF;
926
+ END $rb$;
927
+
928
+ DO $rb$ BEGIN
929
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_redemptions_order_id_fkey' AND conrelid = 'public.coupon_redemptions'::regclass) THEN
930
+ ALTER TABLE ONLY public.coupon_redemptions
931
+ ADD CONSTRAINT coupon_redemptions_order_id_fkey FOREIGN KEY (order_id) REFERENCES public.orders(id) ON DELETE CASCADE;
932
+ END IF;
933
+ END $rb$;
934
+
935
+ DO $rb$ BEGIN
936
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'coupon_redemptions_user_id_fkey' AND conrelid = 'public.coupon_redemptions'::regclass) THEN
937
+ ALTER TABLE ONLY public.coupon_redemptions
938
+ ADD CONSTRAINT coupon_redemptions_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id) ON DELETE SET NULL;
939
+ END IF;
940
+ END $rb$;
941
+
942
+ DO $rb$ BEGIN
943
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'email_2fa_challenges_user_id_fkey' AND conrelid = 'public.email_2fa_challenges'::regclass) THEN
944
+ ALTER TABLE ONLY public.email_2fa_challenges
945
+ ADD CONSTRAINT email_2fa_challenges_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id) ON DELETE CASCADE;
946
+ END IF;
947
+ END $rb$;
948
+
949
+ DO $rb$ BEGIN
950
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'freemius_plans_product_id_fkey' AND conrelid = 'public.freemius_plans'::regclass) THEN
951
+ ALTER TABLE ONLY public.freemius_plans
952
+ ADD CONSTRAINT freemius_plans_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
953
+ END IF;
954
+ END $rb$;
955
+
956
+ DO $rb$ BEGIN
957
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'freemius_pricing_plan_id_fkey' AND conrelid = 'public.freemius_pricing'::regclass) THEN
958
+ ALTER TABLE ONLY public.freemius_pricing
959
+ ADD CONSTRAINT freemius_pricing_plan_id_fkey FOREIGN KEY (plan_id) REFERENCES public.freemius_plans(id) ON DELETE CASCADE;
960
+ END IF;
961
+ END $rb$;
962
+
963
+ DO $rb$ BEGIN
964
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'logos_media_id_fkey' AND conrelid = 'public.logos'::regclass) THEN
965
+ ALTER TABLE ONLY public.logos
966
+ ADD CONSTRAINT logos_media_id_fkey FOREIGN KEY (media_id) REFERENCES public.media(id) ON DELETE SET NULL;
967
+ END IF;
968
+ END $rb$;
969
+
970
+ DO $rb$ BEGIN
971
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_access_tokens_created_by_fkey' AND conrelid = 'public.mcp_access_tokens'::regclass) THEN
972
+ ALTER TABLE ONLY public.mcp_access_tokens
973
+ ADD CONSTRAINT mcp_access_tokens_created_by_fkey FOREIGN KEY (created_by) REFERENCES auth.users(id) ON DELETE SET NULL;
974
+ END IF;
975
+ END $rb$;
976
+
977
+ DO $rb$ BEGIN
978
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'media_uploader_id_fkey' AND conrelid = 'public.media'::regclass) THEN
979
+ ALTER TABLE ONLY public.media
980
+ ADD CONSTRAINT media_uploader_id_fkey FOREIGN KEY (uploader_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
981
+ END IF;
982
+ END $rb$;
983
+
984
+ DO $rb$ BEGIN
985
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'navigation_items_language_id_fkey' AND conrelid = 'public.navigation_items'::regclass) THEN
986
+ ALTER TABLE ONLY public.navigation_items
987
+ ADD CONSTRAINT navigation_items_language_id_fkey FOREIGN KEY (language_id) REFERENCES public.languages(id) ON DELETE CASCADE;
988
+ END IF;
989
+ END $rb$;
990
+
991
+ DO $rb$ BEGIN
992
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'navigation_items_page_id_fkey' AND conrelid = 'public.navigation_items'::regclass) THEN
993
+ ALTER TABLE ONLY public.navigation_items
994
+ ADD CONSTRAINT navigation_items_page_id_fkey FOREIGN KEY (page_id) REFERENCES public.pages(id) ON DELETE SET NULL;
995
+ END IF;
996
+ END $rb$;
997
+
998
+ DO $rb$ BEGIN
999
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'navigation_items_parent_id_fkey' AND conrelid = 'public.navigation_items'::regclass) THEN
1000
+ ALTER TABLE ONLY public.navigation_items
1001
+ ADD CONSTRAINT navigation_items_parent_id_fkey FOREIGN KEY (parent_id) REFERENCES public.navigation_items(id) ON DELETE CASCADE;
1002
+ END IF;
1003
+ END $rb$;
1004
+
1005
+ DO $rb$ BEGIN
1006
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'order_items_order_id_fkey' AND conrelid = 'public.order_items'::regclass) THEN
1007
+ ALTER TABLE ONLY public.order_items
1008
+ ADD CONSTRAINT order_items_order_id_fkey FOREIGN KEY (order_id) REFERENCES public.orders(id) ON DELETE CASCADE;
1009
+ END IF;
1010
+ END $rb$;
1011
+
1012
+ DO $rb$ BEGIN
1013
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'order_items_product_id_fkey' AND conrelid = 'public.order_items'::regclass) THEN
1014
+ ALTER TABLE ONLY public.order_items
1015
+ ADD CONSTRAINT order_items_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE SET NULL;
1016
+ END IF;
1017
+ END $rb$;
1018
+
1019
+ DO $rb$ BEGIN
1020
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'order_items_variant_id_fkey' AND conrelid = 'public.order_items'::regclass) THEN
1021
+ ALTER TABLE ONLY public.order_items
1022
+ ADD CONSTRAINT order_items_variant_id_fkey FOREIGN KEY (variant_id) REFERENCES public.product_variants(id) ON DELETE SET NULL;
1023
+ END IF;
1024
+ END $rb$;
1025
+
1026
+ DO $rb$ BEGIN
1027
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'orders_coupon_id_fkey' AND conrelid = 'public.orders'::regclass) THEN
1028
+ ALTER TABLE ONLY public.orders
1029
+ ADD CONSTRAINT orders_coupon_id_fkey FOREIGN KEY (coupon_id) REFERENCES public.coupons(id) ON DELETE SET NULL;
1030
+ END IF;
1031
+ END $rb$;
1032
+
1033
+ DO $rb$ BEGIN
1034
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'orders_user_id_fkey' AND conrelid = 'public.orders'::regclass) THEN
1035
+ ALTER TABLE ONLY public.orders
1036
+ ADD CONSTRAINT orders_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id) ON DELETE SET NULL;
1037
+ END IF;
1038
+ END $rb$;
1039
+
1040
+ DO $rb$ BEGIN
1041
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'page_revisions_author_id_fkey' AND conrelid = 'public.page_revisions'::regclass) THEN
1042
+ ALTER TABLE ONLY public.page_revisions
1043
+ ADD CONSTRAINT page_revisions_author_id_fkey FOREIGN KEY (author_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
1044
+ END IF;
1045
+ END $rb$;
1046
+
1047
+ DO $rb$ BEGIN
1048
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'page_revisions_page_id_fkey' AND conrelid = 'public.page_revisions'::regclass) THEN
1049
+ ALTER TABLE ONLY public.page_revisions
1050
+ ADD CONSTRAINT page_revisions_page_id_fkey FOREIGN KEY (page_id) REFERENCES public.pages(id) ON DELETE CASCADE;
1051
+ END IF;
1052
+ END $rb$;
1053
+
1054
+ DO $rb$ BEGIN
1055
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'pages_author_id_fkey' AND conrelid = 'public.pages'::regclass) THEN
1056
+ ALTER TABLE ONLY public.pages
1057
+ ADD CONSTRAINT pages_author_id_fkey FOREIGN KEY (author_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
1058
+ END IF;
1059
+ END $rb$;
1060
+
1061
+ DO $rb$ BEGIN
1062
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'pages_feature_image_id_fkey' AND conrelid = 'public.pages'::regclass) THEN
1063
+ ALTER TABLE ONLY public.pages
1064
+ ADD CONSTRAINT pages_feature_image_id_fkey FOREIGN KEY (feature_image_id) REFERENCES public.media(id) ON DELETE SET NULL;
1065
+ END IF;
1066
+ END $rb$;
1067
+
1068
+ DO $rb$ BEGIN
1069
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'pages_language_id_fkey' AND conrelid = 'public.pages'::regclass) THEN
1070
+ ALTER TABLE ONLY public.pages
1071
+ ADD CONSTRAINT pages_language_id_fkey FOREIGN KEY (language_id) REFERENCES public.languages(id) ON DELETE CASCADE;
1072
+ END IF;
1073
+ END $rb$;
1074
+
1075
+ DO $rb$ BEGIN
1076
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'post_revisions_author_id_fkey' AND conrelid = 'public.post_revisions'::regclass) THEN
1077
+ ALTER TABLE ONLY public.post_revisions
1078
+ ADD CONSTRAINT post_revisions_author_id_fkey FOREIGN KEY (author_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
1079
+ END IF;
1080
+ END $rb$;
1081
+
1082
+ DO $rb$ BEGIN
1083
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'post_revisions_post_id_fkey' AND conrelid = 'public.post_revisions'::regclass) THEN
1084
+ ALTER TABLE ONLY public.post_revisions
1085
+ ADD CONSTRAINT post_revisions_post_id_fkey FOREIGN KEY (post_id) REFERENCES public.posts(id) ON DELETE CASCADE;
1086
+ END IF;
1087
+ END $rb$;
1088
+
1089
+ DO $rb$ BEGIN
1090
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'posts_author_id_fkey' AND conrelid = 'public.posts'::regclass) THEN
1091
+ ALTER TABLE ONLY public.posts
1092
+ ADD CONSTRAINT posts_author_id_fkey FOREIGN KEY (author_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
1093
+ END IF;
1094
+ END $rb$;
1095
+
1096
+ DO $rb$ BEGIN
1097
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'posts_feature_image_id_fkey' AND conrelid = 'public.posts'::regclass) THEN
1098
+ ALTER TABLE ONLY public.posts
1099
+ ADD CONSTRAINT posts_feature_image_id_fkey FOREIGN KEY (feature_image_id) REFERENCES public.media(id) ON DELETE SET NULL;
1100
+ END IF;
1101
+ END $rb$;
1102
+
1103
+ DO $rb$ BEGIN
1104
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'posts_language_id_fkey' AND conrelid = 'public.posts'::regclass) THEN
1105
+ ALTER TABLE ONLY public.posts
1106
+ ADD CONSTRAINT posts_language_id_fkey FOREIGN KEY (language_id) REFERENCES public.languages(id) ON DELETE CASCADE;
1107
+ END IF;
1108
+ END $rb$;
1109
+
1110
+ DO $rb$ BEGIN
1111
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_attribute_terms_attribute_id_fkey' AND conrelid = 'public.product_attribute_terms'::regclass) THEN
1112
+ ALTER TABLE ONLY public.product_attribute_terms
1113
+ ADD CONSTRAINT product_attribute_terms_attribute_id_fkey FOREIGN KEY (attribute_id) REFERENCES public.product_attributes(id) ON DELETE CASCADE;
1114
+ END IF;
1115
+ END $rb$;
1116
+
1117
+ DO $rb$ BEGIN
1118
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_categories_category_id_fkey' AND conrelid = 'public.product_categories'::regclass) THEN
1119
+ ALTER TABLE ONLY public.product_categories
1120
+ ADD CONSTRAINT product_categories_category_id_fkey FOREIGN KEY (category_id) REFERENCES public.categories(id) ON DELETE CASCADE;
1121
+ END IF;
1122
+ END $rb$;
1123
+
1124
+ DO $rb$ BEGIN
1125
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_categories_product_id_fkey' AND conrelid = 'public.product_categories'::regclass) THEN
1126
+ ALTER TABLE ONLY public.product_categories
1127
+ ADD CONSTRAINT product_categories_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
1128
+ END IF;
1129
+ END $rb$;
1130
+
1131
+ DO $rb$ BEGIN
1132
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_drafts_author_id_fkey' AND conrelid = 'public.product_drafts'::regclass) THEN
1133
+ ALTER TABLE ONLY public.product_drafts
1134
+ ADD CONSTRAINT product_drafts_author_id_fkey FOREIGN KEY (author_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
1135
+ END IF;
1136
+ END $rb$;
1137
+
1138
+ DO $rb$ BEGIN
1139
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_drafts_product_id_fkey' AND conrelid = 'public.product_drafts'::regclass) THEN
1140
+ ALTER TABLE ONLY public.product_drafts
1141
+ ADD CONSTRAINT product_drafts_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
1142
+ END IF;
1143
+ END $rb$;
1144
+
1145
+ DO $rb$ BEGIN
1146
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_freemius_sale_coupons_product_id_fkey' AND conrelid = 'public.product_freemius_sale_coupons'::regclass) THEN
1147
+ ALTER TABLE ONLY public.product_freemius_sale_coupons
1148
+ ADD CONSTRAINT product_freemius_sale_coupons_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
1149
+ END IF;
1150
+ END $rb$;
1151
+
1152
+ DO $rb$ BEGIN
1153
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_media_media_id_fkey' AND conrelid = 'public.product_media'::regclass) THEN
1154
+ ALTER TABLE ONLY public.product_media
1155
+ ADD CONSTRAINT product_media_media_id_fkey FOREIGN KEY (media_id) REFERENCES public.media(id) ON DELETE CASCADE;
1156
+ END IF;
1157
+ END $rb$;
1158
+
1159
+ DO $rb$ BEGIN
1160
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_media_product_id_fkey' AND conrelid = 'public.product_media'::regclass) THEN
1161
+ ALTER TABLE ONLY public.product_media
1162
+ ADD CONSTRAINT product_media_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
1163
+ END IF;
1164
+ END $rb$;
1165
+
1166
+ DO $rb$ BEGIN
1167
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_revisions_author_id_fkey' AND conrelid = 'public.product_revisions'::regclass) THEN
1168
+ ALTER TABLE ONLY public.product_revisions
1169
+ ADD CONSTRAINT product_revisions_author_id_fkey FOREIGN KEY (author_id) REFERENCES public.profiles(id) ON DELETE SET NULL;
1170
+ END IF;
1171
+ END $rb$;
1172
+
1173
+ DO $rb$ BEGIN
1174
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_revisions_product_id_fkey' AND conrelid = 'public.product_revisions'::regclass) THEN
1175
+ ALTER TABLE ONLY public.product_revisions
1176
+ ADD CONSTRAINT product_revisions_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
1177
+ END IF;
1178
+ END $rb$;
1179
+
1180
+ DO $rb$ BEGIN
1181
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_variants_main_media_id_fkey' AND conrelid = 'public.product_variants'::regclass) THEN
1182
+ ALTER TABLE ONLY public.product_variants
1183
+ ADD CONSTRAINT product_variants_main_media_id_fkey FOREIGN KEY (main_media_id) REFERENCES public.media(id) ON DELETE SET NULL;
1184
+ END IF;
1185
+ END $rb$;
1186
+
1187
+ DO $rb$ BEGIN
1188
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'product_variants_product_id_fkey' AND conrelid = 'public.product_variants'::regclass) THEN
1189
+ ALTER TABLE ONLY public.product_variants
1190
+ ADD CONSTRAINT product_variants_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;
1191
+ END IF;
1192
+ END $rb$;
1193
+
1194
+ DO $rb$ BEGIN
1195
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'products_language_id_fkey' AND conrelid = 'public.products'::regclass) THEN
1196
+ ALTER TABLE ONLY public.products
1197
+ ADD CONSTRAINT products_language_id_fkey FOREIGN KEY (language_id) REFERENCES public.languages(id) ON DELETE CASCADE;
1198
+ END IF;
1199
+ END $rb$;
1200
+
1201
+ DO $rb$ BEGIN
1202
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'profiles_id_fkey' AND conrelid = 'public.profiles'::regclass) THEN
1203
+ ALTER TABLE ONLY public.profiles
1204
+ ADD CONSTRAINT profiles_id_fkey FOREIGN KEY (id) REFERENCES auth.users(id) ON DELETE CASCADE;
1205
+ END IF;
1206
+ END $rb$;
1207
+
1208
+ DO $rb$ BEGIN
1209
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'shipping_zone_locations_zone_id_fkey' AND conrelid = 'public.shipping_zone_locations'::regclass) THEN
1210
+ ALTER TABLE ONLY public.shipping_zone_locations
1211
+ ADD CONSTRAINT shipping_zone_locations_zone_id_fkey FOREIGN KEY (zone_id) REFERENCES public.shipping_zones(id) ON DELETE CASCADE;
1212
+ END IF;
1213
+ END $rb$;
1214
+
1215
+ DO $rb$ BEGIN
1216
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'shipping_zone_methods_zone_id_fkey' AND conrelid = 'public.shipping_zone_methods'::regclass) THEN
1217
+ ALTER TABLE ONLY public.shipping_zone_methods
1218
+ ADD CONSTRAINT shipping_zone_methods_zone_id_fkey FOREIGN KEY (zone_id) REFERENCES public.shipping_zones(id) ON DELETE CASCADE;
1219
+ END IF;
1220
+ END $rb$;
1221
+
1222
+ DO $rb$ BEGIN
1223
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'thread_messages_thread_id_fkey' AND conrelid = 'public.thread_messages'::regclass) THEN
1224
+ ALTER TABLE ONLY public.thread_messages
1225
+ ADD CONSTRAINT thread_messages_thread_id_fkey FOREIGN KEY (thread_id) REFERENCES public.message_threads(id) ON DELETE CASCADE;
1226
+ END IF;
1227
+ END $rb$;
1228
+
1229
+ DO $rb$ BEGIN
1230
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_addresses_user_id_fkey' AND conrelid = 'public.user_addresses'::regclass) THEN
1231
+ ALTER TABLE ONLY public.user_addresses
1232
+ ADD CONSTRAINT user_addresses_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.profiles(id) ON DELETE CASCADE;
1233
+ END IF;
1234
+ END $rb$;
1235
+
1236
+ DO $rb$ BEGIN
1237
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_security_settings_user_id_fkey' AND conrelid = 'public.user_security_settings'::regclass) THEN
1238
+ ALTER TABLE ONLY public.user_security_settings
1239
+ ADD CONSTRAINT user_security_settings_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id) ON DELETE CASCADE;
1240
+ END IF;
1241
+ END $rb$;
1242
+
1243
+ DO $rb$ BEGIN
1244
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'user_trusted_devices_user_id_fkey' AND conrelid = 'public.user_trusted_devices'::regclass) THEN
1245
+ ALTER TABLE ONLY public.user_trusted_devices
1246
+ ADD CONSTRAINT user_trusted_devices_user_id_fkey FOREIGN KEY (user_id) REFERENCES auth.users(id) ON DELETE CASCADE;
1247
+ END IF;
1248
+ END $rb$;
1249
+
1250
+ DO $rb$ BEGIN
1251
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'variant_attribute_mapping_attribute_term_id_fkey' AND conrelid = 'public.variant_attribute_mapping'::regclass) THEN
1252
+ ALTER TABLE ONLY public.variant_attribute_mapping
1253
+ ADD CONSTRAINT variant_attribute_mapping_attribute_term_id_fkey FOREIGN KEY (attribute_term_id) REFERENCES public.product_attribute_terms(id) ON DELETE CASCADE;
1254
+ END IF;
1255
+ END $rb$;
1256
+
1257
+ DO $rb$ BEGIN
1258
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'variant_attribute_mapping_variant_id_fkey' AND conrelid = 'public.variant_attribute_mapping'::regclass) THEN
1259
+ ALTER TABLE ONLY public.variant_attribute_mapping
1260
+ ADD CONSTRAINT variant_attribute_mapping_variant_id_fkey FOREIGN KEY (variant_id) REFERENCES public.product_variants(id) ON DELETE CASCADE;
1261
+ END IF;
1262
+ END $rb$;