@wopr-network/platform-core 1.66.0 → 1.66.1

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.
@@ -2,7 +2,7 @@ CREATE TYPE "public"."promotion_status" AS ENUM('draft', 'scheduled', 'active',
2
2
  CREATE TYPE "public"."promotion_type" AS ENUM('bonus_on_purchase', 'coupon_fixed', 'coupon_unique', 'batch_grant');--> statement-breakpoint
3
3
  CREATE TYPE "public"."promotion_user_segment" AS ENUM('all', 'new_users', 'existing_users', 'tenant_list');--> statement-breakpoint
4
4
  CREATE TYPE "public"."promotion_value_type" AS ENUM('flat_credits', 'percent_of_purchase');--> statement-breakpoint
5
- CREATE TABLE "account_deletion_requests" (
5
+ CREATE TABLE IF NOT EXISTS "account_deletion_requests" (
6
6
  "id" text PRIMARY KEY NOT NULL,
7
7
  "tenant_id" text NOT NULL,
8
8
  "requested_by" text NOT NULL,
@@ -16,7 +16,7 @@ CREATE TABLE "account_deletion_requests" (
16
16
  "updated_at" text DEFAULT (now()) NOT NULL
17
17
  );
18
18
  --> statement-breakpoint
19
- CREATE TABLE "account_export_requests" (
19
+ CREATE TABLE IF NOT EXISTS "account_export_requests" (
20
20
  "id" text PRIMARY KEY NOT NULL,
21
21
  "tenant_id" text NOT NULL,
22
22
  "requested_by" text NOT NULL,
@@ -27,7 +27,7 @@ CREATE TABLE "account_export_requests" (
27
27
  "updated_at" timestamp with time zone DEFAULT now() NOT NULL
28
28
  );
29
29
  --> statement-breakpoint
30
- CREATE TABLE "admin_audit_log" (
30
+ CREATE TABLE IF NOT EXISTS "admin_audit_log" (
31
31
  "id" text PRIMARY KEY NOT NULL,
32
32
  "admin_user" text NOT NULL,
33
33
  "action" text NOT NULL,
@@ -41,7 +41,7 @@ CREATE TABLE "admin_audit_log" (
41
41
  "outcome" text
42
42
  );
43
43
  --> statement-breakpoint
44
- CREATE TABLE "admin_users" (
44
+ CREATE TABLE IF NOT EXISTS "admin_users" (
45
45
  "id" text PRIMARY KEY NOT NULL,
46
46
  "email" text NOT NULL,
47
47
  "name" text,
@@ -56,14 +56,14 @@ CREATE TABLE "admin_users" (
56
56
  CONSTRAINT "chk_admin_users_role" CHECK ("admin_users"."role" IN ('platform_admin', 'tenant_admin', 'user'))
57
57
  );
58
58
  --> statement-breakpoint
59
- CREATE TABLE "affiliate_codes" (
59
+ CREATE TABLE IF NOT EXISTS "affiliate_codes" (
60
60
  "tenant_id" text PRIMARY KEY NOT NULL,
61
61
  "code" text NOT NULL,
62
62
  "created_at" text DEFAULT (now()) NOT NULL,
63
63
  CONSTRAINT "affiliate_codes_code_unique" UNIQUE("code")
64
64
  );
65
65
  --> statement-breakpoint
66
- CREATE TABLE "affiliate_referrals" (
66
+ CREATE TABLE IF NOT EXISTS "affiliate_referrals" (
67
67
  "id" text PRIMARY KEY NOT NULL,
68
68
  "referrer_tenant_id" text NOT NULL,
69
69
  "referred_tenant_id" text NOT NULL,
@@ -79,7 +79,7 @@ CREATE TABLE "affiliate_referrals" (
79
79
  CONSTRAINT "affiliate_referrals_referred_tenant_id_unique" UNIQUE("referred_tenant_id")
80
80
  );
81
81
  --> statement-breakpoint
82
- CREATE TABLE "affiliate_fraud_events" (
82
+ CREATE TABLE IF NOT EXISTS "affiliate_fraud_events" (
83
83
  "id" text PRIMARY KEY NOT NULL,
84
84
  "referral_id" text NOT NULL,
85
85
  "referrer_tenant_id" text NOT NULL,
@@ -91,7 +91,7 @@ CREATE TABLE "affiliate_fraud_events" (
91
91
  "created_at" text DEFAULT (now()) NOT NULL
92
92
  );
93
93
  --> statement-breakpoint
94
- CREATE TABLE "coupon_codes" (
94
+ CREATE TABLE IF NOT EXISTS "coupon_codes" (
95
95
  "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
96
96
  "promotion_id" uuid NOT NULL,
97
97
  "code" text NOT NULL,
@@ -103,7 +103,7 @@ CREATE TABLE "coupon_codes" (
103
103
  CONSTRAINT "coupon_codes_code_unique" UNIQUE("code")
104
104
  );
105
105
  --> statement-breakpoint
106
- CREATE TABLE "credit_auto_topup" (
106
+ CREATE TABLE IF NOT EXISTS "credit_auto_topup" (
107
107
  "id" text PRIMARY KEY NOT NULL,
108
108
  "tenant_id" text NOT NULL,
109
109
  "amount_cents" integer NOT NULL,
@@ -113,7 +113,7 @@ CREATE TABLE "credit_auto_topup" (
113
113
  "created_at" text DEFAULT (now()) NOT NULL
114
114
  );
115
115
  --> statement-breakpoint
116
- CREATE TABLE "credit_auto_topup_settings" (
116
+ CREATE TABLE IF NOT EXISTS "credit_auto_topup_settings" (
117
117
  "tenant_id" text PRIMARY KEY NOT NULL,
118
118
  "usage_enabled" boolean DEFAULT false NOT NULL,
119
119
  "usage_threshold_cents" integer DEFAULT 100 NOT NULL,
@@ -129,13 +129,13 @@ CREATE TABLE "credit_auto_topup_settings" (
129
129
  "updated_at" text DEFAULT (now()) NOT NULL
130
130
  );
131
131
  --> statement-breakpoint
132
- CREATE TABLE "credit_balances" (
132
+ CREATE TABLE IF NOT EXISTS "credit_balances" (
133
133
  "tenant_id" text PRIMARY KEY NOT NULL,
134
134
  "balance_credits" bigint DEFAULT 0 NOT NULL,
135
135
  "last_updated" text DEFAULT (now()) NOT NULL
136
136
  );
137
137
  --> statement-breakpoint
138
- CREATE TABLE "credit_transactions" (
138
+ CREATE TABLE IF NOT EXISTS "credit_transactions" (
139
139
  "id" text PRIMARY KEY NOT NULL,
140
140
  "tenant_id" text NOT NULL,
141
141
  "amount_credits" bigint NOT NULL,
@@ -151,7 +151,7 @@ CREATE TABLE "credit_transactions" (
151
151
  CONSTRAINT "credit_transactions_reference_id_unique" UNIQUE("reference_id")
152
152
  );
153
153
  --> statement-breakpoint
154
- CREATE TABLE "dividend_distributions" (
154
+ CREATE TABLE IF NOT EXISTS "dividend_distributions" (
155
155
  "id" text PRIMARY KEY NOT NULL,
156
156
  "tenant_id" text NOT NULL,
157
157
  "date" text NOT NULL,
@@ -161,7 +161,7 @@ CREATE TABLE "dividend_distributions" (
161
161
  "created_at" text DEFAULT (now()) NOT NULL
162
162
  );
163
163
  --> statement-breakpoint
164
- CREATE TABLE "email_notifications" (
164
+ CREATE TABLE IF NOT EXISTS "email_notifications" (
165
165
  "id" text PRIMARY KEY NOT NULL,
166
166
  "tenant_id" text NOT NULL,
167
167
  "email_type" text NOT NULL,
@@ -170,7 +170,7 @@ CREATE TABLE "email_notifications" (
170
170
  CONSTRAINT "uniq_email_per_day" UNIQUE("tenant_id","email_type","sent_date")
171
171
  );
172
172
  --> statement-breakpoint
173
- CREATE TABLE "billing_period_summaries" (
173
+ CREATE TABLE IF NOT EXISTS "billing_period_summaries" (
174
174
  "id" text PRIMARY KEY NOT NULL,
175
175
  "tenant" text NOT NULL,
176
176
  "capability" text NOT NULL,
@@ -184,7 +184,7 @@ CREATE TABLE "billing_period_summaries" (
184
184
  "updated_at" bigint NOT NULL
185
185
  );
186
186
  --> statement-breakpoint
187
- CREATE TABLE "meter_events" (
187
+ CREATE TABLE IF NOT EXISTS "meter_events" (
188
188
  "id" text PRIMARY KEY NOT NULL,
189
189
  "tenant" text NOT NULL,
190
190
  "cost" bigint NOT NULL,
@@ -200,7 +200,7 @@ CREATE TABLE "meter_events" (
200
200
  "metadata" text
201
201
  );
202
202
  --> statement-breakpoint
203
- CREATE TABLE "usage_summaries" (
203
+ CREATE TABLE IF NOT EXISTS "usage_summaries" (
204
204
  "id" text PRIMARY KEY NOT NULL,
205
205
  "tenant" text NOT NULL,
206
206
  "capability" text NOT NULL,
@@ -213,7 +213,7 @@ CREATE TABLE "usage_summaries" (
213
213
  "window_end" bigint NOT NULL
214
214
  );
215
215
  --> statement-breakpoint
216
- CREATE TABLE "notification_preferences" (
216
+ CREATE TABLE IF NOT EXISTS "notification_preferences" (
217
217
  "tenant_id" text PRIMARY KEY NOT NULL,
218
218
  "billing_low_balance" boolean DEFAULT true NOT NULL,
219
219
  "billing_receipts" boolean DEFAULT true NOT NULL,
@@ -225,7 +225,7 @@ CREATE TABLE "notification_preferences" (
225
225
  "updated_at" bigint DEFAULT (extract(epoch from now()))::bigint NOT NULL
226
226
  );
227
227
  --> statement-breakpoint
228
- CREATE TABLE "notification_queue" (
228
+ CREATE TABLE IF NOT EXISTS "notification_queue" (
229
229
  "id" text PRIMARY KEY NOT NULL,
230
230
  "tenant_id" text NOT NULL,
231
231
  "email_type" text NOT NULL,
@@ -241,14 +241,14 @@ CREATE TABLE "notification_queue" (
241
241
  "sent_at" bigint
242
242
  );
243
243
  --> statement-breakpoint
244
- CREATE TABLE "org_memberships" (
244
+ CREATE TABLE IF NOT EXISTS "org_memberships" (
245
245
  "org_tenant_id" text NOT NULL,
246
246
  "member_tenant_id" text NOT NULL,
247
247
  "created_at" bigint NOT NULL,
248
248
  CONSTRAINT "org_memberships_org_tenant_id_member_tenant_id_pk" PRIMARY KEY("org_tenant_id","member_tenant_id")
249
249
  );
250
250
  --> statement-breakpoint
251
- CREATE TABLE "organization_invites" (
251
+ CREATE TABLE IF NOT EXISTS "organization_invites" (
252
252
  "id" text PRIMARY KEY NOT NULL,
253
253
  "org_id" text NOT NULL,
254
254
  "email" text NOT NULL,
@@ -260,7 +260,7 @@ CREATE TABLE "organization_invites" (
260
260
  CONSTRAINT "organization_invites_token_unique" UNIQUE("token")
261
261
  );
262
262
  --> statement-breakpoint
263
- CREATE TABLE "organization_members" (
263
+ CREATE TABLE IF NOT EXISTS "organization_members" (
264
264
  "id" text PRIMARY KEY NOT NULL,
265
265
  "org_id" text NOT NULL,
266
266
  "user_id" text NOT NULL,
@@ -268,7 +268,7 @@ CREATE TABLE "organization_members" (
268
268
  "joined_at" bigint DEFAULT (extract(epoch from now()) * 1000)::bigint NOT NULL
269
269
  );
270
270
  --> statement-breakpoint
271
- CREATE TABLE "payram_charges" (
271
+ CREATE TABLE IF NOT EXISTS "payram_charges" (
272
272
  "reference_id" text PRIMARY KEY NOT NULL,
273
273
  "tenant_id" text NOT NULL,
274
274
  "amount_usd_cents" integer NOT NULL,
@@ -280,7 +280,7 @@ CREATE TABLE "payram_charges" (
280
280
  "credited_at" text
281
281
  );
282
282
  --> statement-breakpoint
283
- CREATE TABLE "platform_api_keys" (
283
+ CREATE TABLE IF NOT EXISTS "platform_api_keys" (
284
284
  "id" text PRIMARY KEY NOT NULL,
285
285
  "key_hash" text NOT NULL,
286
286
  "user_id" text NOT NULL,
@@ -291,7 +291,7 @@ CREATE TABLE "platform_api_keys" (
291
291
  "created_at" bigint NOT NULL
292
292
  );
293
293
  --> statement-breakpoint
294
- CREATE TABLE "promotion_redemptions" (
294
+ CREATE TABLE IF NOT EXISTS "promotion_redemptions" (
295
295
  "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
296
296
  "promotion_id" uuid NOT NULL,
297
297
  "tenant_id" text NOT NULL,
@@ -302,7 +302,7 @@ CREATE TABLE "promotion_redemptions" (
302
302
  "redeemed_at" timestamp with time zone DEFAULT now() NOT NULL
303
303
  );
304
304
  --> statement-breakpoint
305
- CREATE TABLE "promotions" (
305
+ CREATE TABLE IF NOT EXISTS "promotions" (
306
306
  "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
307
307
  "name" text NOT NULL,
308
308
  "type" "promotion_type" NOT NULL,
@@ -330,7 +330,7 @@ CREATE TABLE "promotions" (
330
330
  CONSTRAINT "promotions_coupon_code_unique" UNIQUE("coupon_code")
331
331
  );
332
332
  --> statement-breakpoint
333
- CREATE TABLE "provider_credentials" (
333
+ CREATE TABLE IF NOT EXISTS "provider_credentials" (
334
334
  "id" text PRIMARY KEY NOT NULL,
335
335
  "provider" text NOT NULL,
336
336
  "key_name" text NOT NULL,
@@ -344,7 +344,7 @@ CREATE TABLE "provider_credentials" (
344
344
  "created_by" text NOT NULL
345
345
  );
346
346
  --> statement-breakpoint
347
- CREATE TABLE "rate_limit_entries" (
347
+ CREATE TABLE IF NOT EXISTS "rate_limit_entries" (
348
348
  "key" text NOT NULL,
349
349
  "scope" text NOT NULL,
350
350
  "count" integer DEFAULT 0 NOT NULL,
@@ -352,7 +352,7 @@ CREATE TABLE "rate_limit_entries" (
352
352
  CONSTRAINT "rate_limit_entries_key_scope_pk" PRIMARY KEY("key","scope")
353
353
  );
354
354
  --> statement-breakpoint
355
- CREATE TABLE "secret_audit_log" (
355
+ CREATE TABLE IF NOT EXISTS "secret_audit_log" (
356
356
  "id" text PRIMARY KEY NOT NULL,
357
357
  "credential_id" text NOT NULL,
358
358
  "accessed_at" bigint DEFAULT (extract(epoch from now()) * 1000)::bigint NOT NULL,
@@ -361,7 +361,7 @@ CREATE TABLE "secret_audit_log" (
361
361
  "ip" text
362
362
  );
363
363
  --> statement-breakpoint
364
- CREATE TABLE "session_usage" (
364
+ CREATE TABLE IF NOT EXISTS "session_usage" (
365
365
  "id" text PRIMARY KEY NOT NULL,
366
366
  "session_id" text NOT NULL,
367
367
  "user_id" text,
@@ -375,7 +375,7 @@ CREATE TABLE "session_usage" (
375
375
  "created_at" bigint NOT NULL
376
376
  );
377
377
  --> statement-breakpoint
378
- CREATE TABLE "tenant_spending_limits" (
378
+ CREATE TABLE IF NOT EXISTS "tenant_spending_limits" (
379
379
  "tenant_id" text PRIMARY KEY NOT NULL,
380
380
  "global_alert_at" real,
381
381
  "global_hard_cap" real,
@@ -383,14 +383,14 @@ CREATE TABLE "tenant_spending_limits" (
383
383
  "updated_at" bigint NOT NULL
384
384
  );
385
385
  --> statement-breakpoint
386
- CREATE TABLE "tenant_addons" (
386
+ CREATE TABLE IF NOT EXISTS "tenant_addons" (
387
387
  "tenant_id" text NOT NULL,
388
388
  "addon_key" text NOT NULL,
389
389
  "enabled_at" timestamp with time zone DEFAULT now() NOT NULL,
390
390
  CONSTRAINT "tenant_addons_tenant_id_addon_key_pk" PRIMARY KEY("tenant_id","addon_key")
391
391
  );
392
392
  --> statement-breakpoint
393
- CREATE TABLE "tenant_api_keys" (
393
+ CREATE TABLE IF NOT EXISTS "tenant_api_keys" (
394
394
  "id" text PRIMARY KEY NOT NULL,
395
395
  "tenant_id" text NOT NULL,
396
396
  "provider" text NOT NULL,
@@ -400,7 +400,7 @@ CREATE TABLE "tenant_api_keys" (
400
400
  "updated_at" bigint NOT NULL
401
401
  );
402
402
  --> statement-breakpoint
403
- CREATE TABLE "tenant_capability_settings" (
403
+ CREATE TABLE IF NOT EXISTS "tenant_capability_settings" (
404
404
  "tenant_id" text NOT NULL,
405
405
  "capability" text NOT NULL,
406
406
  "mode" text DEFAULT 'hosted' NOT NULL,
@@ -408,7 +408,7 @@ CREATE TABLE "tenant_capability_settings" (
408
408
  CONSTRAINT "tenant_capability_settings_tenant_id_capability_pk" PRIMARY KEY("tenant_id","capability")
409
409
  );
410
410
  --> statement-breakpoint
411
- CREATE TABLE "stripe_usage_reports" (
411
+ CREATE TABLE IF NOT EXISTS "stripe_usage_reports" (
412
412
  "id" text PRIMARY KEY NOT NULL,
413
413
  "tenant" text NOT NULL,
414
414
  "capability" text NOT NULL,
@@ -420,7 +420,7 @@ CREATE TABLE "stripe_usage_reports" (
420
420
  "reported_at" bigint NOT NULL
421
421
  );
422
422
  --> statement-breakpoint
423
- CREATE TABLE "tenant_customers" (
423
+ CREATE TABLE IF NOT EXISTS "tenant_customers" (
424
424
  "tenant" text PRIMARY KEY NOT NULL,
425
425
  "processor_customer_id" text NOT NULL,
426
426
  "processor" text DEFAULT 'stripe' NOT NULL,
@@ -432,7 +432,7 @@ CREATE TABLE "tenant_customers" (
432
432
  CONSTRAINT "tenant_customers_processor_customer_id_unique" UNIQUE("processor_customer_id")
433
433
  );
434
434
  --> statement-breakpoint
435
- CREATE TABLE "tenants" (
435
+ CREATE TABLE IF NOT EXISTS "tenants" (
436
436
  "id" text PRIMARY KEY NOT NULL,
437
437
  "name" text NOT NULL,
438
438
  "slug" text,
@@ -444,7 +444,7 @@ CREATE TABLE "tenants" (
444
444
  CONSTRAINT "chk_tenants_type" CHECK ("tenants"."type" IN ('personal', 'org'))
445
445
  );
446
446
  --> statement-breakpoint
447
- CREATE TABLE "user_roles" (
447
+ CREATE TABLE IF NOT EXISTS "user_roles" (
448
448
  "user_id" text NOT NULL,
449
449
  "tenant_id" text NOT NULL,
450
450
  "role" text NOT NULL,
@@ -453,7 +453,7 @@ CREATE TABLE "user_roles" (
453
453
  CONSTRAINT "user_roles_user_id_tenant_id_pk" PRIMARY KEY("user_id","tenant_id")
454
454
  );
455
455
  --> statement-breakpoint
456
- CREATE TABLE "webhook_seen_events" (
456
+ CREATE TABLE IF NOT EXISTS "webhook_seen_events" (
457
457
  "event_id" text NOT NULL,
458
458
  "source" text NOT NULL,
459
459
  "seen_at" bigint NOT NULL,
@@ -463,97 +463,97 @@ CREATE TABLE "webhook_seen_events" (
463
463
  ALTER TABLE "coupon_codes" ADD CONSTRAINT "coupon_codes_promotion_id_promotions_id_fk" FOREIGN KEY ("promotion_id") REFERENCES "public"."promotions"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
464
464
  ALTER TABLE "promotion_redemptions" ADD CONSTRAINT "promotion_redemptions_promotion_id_promotions_id_fk" FOREIGN KEY ("promotion_id") REFERENCES "public"."promotions"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
465
465
  ALTER TABLE "promotion_redemptions" ADD CONSTRAINT "promotion_redemptions_coupon_code_id_coupon_codes_id_fk" FOREIGN KEY ("coupon_code_id") REFERENCES "public"."coupon_codes"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
466
- CREATE INDEX "idx_acct_del_tenant" ON "account_deletion_requests" USING btree ("tenant_id");--> statement-breakpoint
467
- CREATE INDEX "idx_acct_del_status" ON "account_deletion_requests" USING btree ("status");--> statement-breakpoint
468
- CREATE INDEX "idx_acct_del_delete_after" ON "account_deletion_requests" USING btree ("status","delete_after");--> statement-breakpoint
469
- CREATE INDEX "idx_acct_export_tenant" ON "account_export_requests" USING btree ("tenant_id");--> statement-breakpoint
470
- CREATE INDEX "idx_acct_export_status" ON "account_export_requests" USING btree ("status");--> statement-breakpoint
471
- CREATE INDEX "idx_admin_audit_admin" ON "admin_audit_log" USING btree ("admin_user","created_at");--> statement-breakpoint
472
- CREATE INDEX "idx_admin_audit_tenant" ON "admin_audit_log" USING btree ("target_tenant","created_at");--> statement-breakpoint
473
- CREATE INDEX "idx_admin_audit_action" ON "admin_audit_log" USING btree ("action","created_at");--> statement-breakpoint
474
- CREATE INDEX "idx_admin_users_email" ON "admin_users" USING btree ("email");--> statement-breakpoint
475
- CREATE INDEX "idx_admin_users_tenant" ON "admin_users" USING btree ("tenant_id");--> statement-breakpoint
476
- CREATE INDEX "idx_admin_users_status" ON "admin_users" USING btree ("status");--> statement-breakpoint
477
- CREATE INDEX "idx_admin_users_role" ON "admin_users" USING btree ("role");--> statement-breakpoint
478
- CREATE INDEX "idx_admin_users_created" ON "admin_users" USING btree ("created_at");--> statement-breakpoint
479
- CREATE INDEX "idx_admin_users_last_seen" ON "admin_users" USING btree ("last_seen");--> statement-breakpoint
480
- CREATE INDEX "idx_affiliate_ref_referrer" ON "affiliate_referrals" USING btree ("referrer_tenant_id");--> statement-breakpoint
481
- CREATE INDEX "idx_affiliate_ref_code" ON "affiliate_referrals" USING btree ("code");--> statement-breakpoint
482
- CREATE INDEX "idx_fraud_referrer" ON "affiliate_fraud_events" USING btree ("referrer_tenant_id");--> statement-breakpoint
483
- CREATE INDEX "idx_fraud_referred" ON "affiliate_fraud_events" USING btree ("referred_tenant_id");--> statement-breakpoint
484
- CREATE INDEX "idx_fraud_verdict" ON "affiliate_fraud_events" USING btree ("verdict");--> statement-breakpoint
485
- CREATE UNIQUE INDEX "uq_fraud_referral_phase" ON "affiliate_fraud_events" USING btree ("referral_id","phase");--> statement-breakpoint
486
- CREATE INDEX "coupon_codes_promotion_idx" ON "coupon_codes" USING btree ("promotion_id");--> statement-breakpoint
487
- CREATE INDEX "coupon_codes_assigned_tenant_idx" ON "coupon_codes" USING btree ("assigned_tenant_id");--> statement-breakpoint
488
- CREATE INDEX "idx_auto_topup_tenant" ON "credit_auto_topup" USING btree ("tenant_id");--> statement-breakpoint
489
- CREATE INDEX "idx_auto_topup_status" ON "credit_auto_topup" USING btree ("status");--> statement-breakpoint
490
- CREATE INDEX "idx_auto_topup_created" ON "credit_auto_topup" USING btree ("created_at");--> statement-breakpoint
491
- CREATE INDEX "idx_auto_topup_tenant_created" ON "credit_auto_topup" USING btree ("tenant_id","created_at");--> statement-breakpoint
492
- CREATE INDEX "idx_auto_topup_settings_usage" ON "credit_auto_topup_settings" USING btree ("usage_enabled");--> statement-breakpoint
493
- CREATE INDEX "idx_auto_topup_settings_schedule" ON "credit_auto_topup_settings" USING btree ("schedule_enabled","schedule_next_at");--> statement-breakpoint
494
- CREATE INDEX "idx_credit_tx_tenant" ON "credit_transactions" USING btree ("tenant_id");--> statement-breakpoint
495
- CREATE INDEX "idx_credit_tx_type" ON "credit_transactions" USING btree ("type");--> statement-breakpoint
496
- CREATE INDEX "idx_credit_tx_ref" ON "credit_transactions" USING btree ("reference_id");--> statement-breakpoint
497
- CREATE INDEX "idx_credit_tx_created" ON "credit_transactions" USING btree ("created_at");--> statement-breakpoint
498
- CREATE INDEX "idx_credit_tx_tenant_created" ON "credit_transactions" USING btree ("tenant_id","created_at");--> statement-breakpoint
499
- CREATE INDEX "idx_credit_tx_expires" ON "credit_transactions" USING btree ("expires_at");--> statement-breakpoint
500
- CREATE INDEX "idx_credit_tx_fingerprint" ON "credit_transactions" USING btree ("stripe_fingerprint") WHERE "credit_transactions"."stripe_fingerprint" IS NOT NULL;--> statement-breakpoint
501
- CREATE INDEX "idx_dividend_dist_tenant" ON "dividend_distributions" USING btree ("tenant_id");--> statement-breakpoint
502
- CREATE INDEX "idx_dividend_dist_date" ON "dividend_distributions" USING btree ("date");--> statement-breakpoint
503
- CREATE INDEX "idx_dividend_dist_tenant_date" ON "dividend_distributions" USING btree ("tenant_id","date");--> statement-breakpoint
504
- CREATE INDEX "idx_email_notif_tenant" ON "email_notifications" USING btree ("tenant_id");--> statement-breakpoint
505
- CREATE INDEX "idx_email_notif_type" ON "email_notifications" USING btree ("email_type");--> statement-breakpoint
506
- CREATE UNIQUE INDEX "idx_billing_period_unique" ON "billing_period_summaries" USING btree ("tenant","capability","provider","period_start");--> statement-breakpoint
507
- CREATE INDEX "idx_billing_period_tenant" ON "billing_period_summaries" USING btree ("tenant","period_start");--> statement-breakpoint
508
- CREATE INDEX "idx_billing_period_window" ON "billing_period_summaries" USING btree ("period_start","period_end");--> statement-breakpoint
509
- CREATE INDEX "idx_meter_tenant" ON "meter_events" USING btree ("tenant");--> statement-breakpoint
510
- CREATE INDEX "idx_meter_timestamp" ON "meter_events" USING btree ("timestamp");--> statement-breakpoint
511
- CREATE INDEX "idx_meter_capability" ON "meter_events" USING btree ("capability");--> statement-breakpoint
512
- CREATE INDEX "idx_meter_session" ON "meter_events" USING btree ("session_id");--> statement-breakpoint
513
- CREATE INDEX "idx_meter_tenant_timestamp" ON "meter_events" USING btree ("tenant","timestamp");--> statement-breakpoint
514
- CREATE INDEX "idx_meter_tier" ON "meter_events" USING btree ("tier");--> statement-breakpoint
515
- CREATE INDEX "idx_summary_tenant" ON "usage_summaries" USING btree ("tenant","window_start");--> statement-breakpoint
516
- CREATE INDEX "idx_summary_window" ON "usage_summaries" USING btree ("window_start","window_end");--> statement-breakpoint
517
- CREATE INDEX "idx_notif_queue_tenant" ON "notification_queue" USING btree ("tenant_id");--> statement-breakpoint
518
- CREATE INDEX "idx_notif_queue_status" ON "notification_queue" USING btree ("status");--> statement-breakpoint
519
- CREATE INDEX "idx_notif_queue_type" ON "notification_queue" USING btree ("email_type");--> statement-breakpoint
520
- CREATE INDEX "idx_notif_queue_retry" ON "notification_queue" USING btree ("status","retry_after");--> statement-breakpoint
521
- CREATE UNIQUE INDEX "idx_org_memberships_member_unique" ON "org_memberships" USING btree ("member_tenant_id");--> statement-breakpoint
522
- CREATE INDEX "idx_org_memberships_org" ON "org_memberships" USING btree ("org_tenant_id");--> statement-breakpoint
523
- CREATE INDEX "idx_org_invites_org_id" ON "organization_invites" USING btree ("org_id");--> statement-breakpoint
524
- CREATE INDEX "idx_org_invites_token" ON "organization_invites" USING btree ("token");--> statement-breakpoint
525
- CREATE INDEX "idx_org_members_org_id" ON "organization_members" USING btree ("org_id");--> statement-breakpoint
526
- CREATE INDEX "idx_org_members_user_id" ON "organization_members" USING btree ("user_id");--> statement-breakpoint
527
- CREATE UNIQUE INDEX "org_members_org_user_unique" ON "organization_members" USING btree ("org_id","user_id");--> statement-breakpoint
528
- CREATE INDEX "idx_payram_charges_tenant" ON "payram_charges" USING btree ("tenant_id");--> statement-breakpoint
529
- CREATE INDEX "idx_payram_charges_status" ON "payram_charges" USING btree ("status");--> statement-breakpoint
530
- CREATE INDEX "idx_payram_charges_created" ON "payram_charges" USING btree ("created_at");--> statement-breakpoint
531
- CREATE UNIQUE INDEX "idx_platform_api_keys_hash" ON "platform_api_keys" USING btree ("key_hash");--> statement-breakpoint
532
- CREATE INDEX "idx_platform_api_keys_user" ON "platform_api_keys" USING btree ("user_id");--> statement-breakpoint
533
- CREATE INDEX "promotion_redemptions_promotion_idx" ON "promotion_redemptions" USING btree ("promotion_id");--> statement-breakpoint
534
- CREATE INDEX "promotion_redemptions_tenant_idx" ON "promotion_redemptions" USING btree ("tenant_id");--> statement-breakpoint
535
- CREATE INDEX "promotions_status_idx" ON "promotions" USING btree ("status");--> statement-breakpoint
536
- CREATE INDEX "promotions_coupon_code_idx" ON "promotions" USING btree ("coupon_code");--> statement-breakpoint
537
- CREATE INDEX "idx_provider_creds_provider" ON "provider_credentials" USING btree ("provider");--> statement-breakpoint
538
- CREATE INDEX "idx_provider_creds_active" ON "provider_credentials" USING btree ("provider","is_active");--> statement-breakpoint
539
- CREATE INDEX "idx_provider_creds_created_by" ON "provider_credentials" USING btree ("created_by");--> statement-breakpoint
540
- CREATE INDEX "idx_rate_limit_window" ON "rate_limit_entries" USING btree ("window_start");--> statement-breakpoint
541
- CREATE INDEX "idx_secret_audit_credential" ON "secret_audit_log" USING btree ("credential_id","accessed_at");--> statement-breakpoint
542
- CREATE INDEX "idx_secret_audit_accessed_by" ON "secret_audit_log" USING btree ("accessed_by");--> statement-breakpoint
543
- CREATE INDEX "idx_session_usage_session" ON "session_usage" USING btree ("session_id");--> statement-breakpoint
544
- CREATE INDEX "idx_session_usage_user" ON "session_usage" USING btree ("user_id");--> statement-breakpoint
545
- CREATE INDEX "idx_session_usage_created" ON "session_usage" USING btree ("created_at");--> statement-breakpoint
546
- CREATE INDEX "idx_session_usage_page" ON "session_usage" USING btree ("page");--> statement-breakpoint
547
- CREATE INDEX "idx_tenant_addons_tenant" ON "tenant_addons" USING btree ("tenant_id");--> statement-breakpoint
548
- CREATE UNIQUE INDEX "idx_tenant_keys_tenant_provider" ON "tenant_api_keys" USING btree ("tenant_id","provider");--> statement-breakpoint
549
- CREATE INDEX "idx_tenant_keys_tenant" ON "tenant_api_keys" USING btree ("tenant_id");--> statement-breakpoint
550
- CREATE INDEX "idx_tenant_keys_provider" ON "tenant_api_keys" USING btree ("provider");--> statement-breakpoint
551
- CREATE UNIQUE INDEX "idx_stripe_usage_unique" ON "stripe_usage_reports" USING btree ("tenant","capability","provider","period_start");--> statement-breakpoint
552
- CREATE INDEX "idx_stripe_usage_tenant" ON "stripe_usage_reports" USING btree ("tenant","reported_at");--> statement-breakpoint
553
- CREATE INDEX "idx_tenant_customers_processor" ON "tenant_customers" USING btree ("processor_customer_id");--> statement-breakpoint
554
- CREATE INDEX "idx_tenants_slug" ON "tenants" USING btree ("slug");--> statement-breakpoint
555
- CREATE INDEX "idx_tenants_owner" ON "tenants" USING btree ("owner_id");--> statement-breakpoint
556
- CREATE INDEX "idx_tenants_type" ON "tenants" USING btree ("type");--> statement-breakpoint
557
- CREATE INDEX "idx_user_roles_tenant" ON "user_roles" USING btree ("tenant_id");--> statement-breakpoint
558
- CREATE INDEX "idx_user_roles_role" ON "user_roles" USING btree ("role");--> statement-breakpoint
559
- CREATE INDEX "idx_webhook_seen_expires" ON "webhook_seen_events" USING btree ("seen_at");
466
+ CREATE INDEX IF NOT EXISTS "idx_acct_del_tenant" ON "account_deletion_requests" USING btree ("tenant_id");--> statement-breakpoint
467
+ CREATE INDEX IF NOT EXISTS "idx_acct_del_status" ON "account_deletion_requests" USING btree ("status");--> statement-breakpoint
468
+ CREATE INDEX IF NOT EXISTS "idx_acct_del_delete_after" ON "account_deletion_requests" USING btree ("status","delete_after");--> statement-breakpoint
469
+ CREATE INDEX IF NOT EXISTS "idx_acct_export_tenant" ON "account_export_requests" USING btree ("tenant_id");--> statement-breakpoint
470
+ CREATE INDEX IF NOT EXISTS "idx_acct_export_status" ON "account_export_requests" USING btree ("status");--> statement-breakpoint
471
+ CREATE INDEX IF NOT EXISTS "idx_admin_audit_admin" ON "admin_audit_log" USING btree ("admin_user","created_at");--> statement-breakpoint
472
+ CREATE INDEX IF NOT EXISTS "idx_admin_audit_tenant" ON "admin_audit_log" USING btree ("target_tenant","created_at");--> statement-breakpoint
473
+ CREATE INDEX IF NOT EXISTS "idx_admin_audit_action" ON "admin_audit_log" USING btree ("action","created_at");--> statement-breakpoint
474
+ CREATE INDEX IF NOT EXISTS "idx_admin_users_email" ON "admin_users" USING btree ("email");--> statement-breakpoint
475
+ CREATE INDEX IF NOT EXISTS "idx_admin_users_tenant" ON "admin_users" USING btree ("tenant_id");--> statement-breakpoint
476
+ CREATE INDEX IF NOT EXISTS "idx_admin_users_status" ON "admin_users" USING btree ("status");--> statement-breakpoint
477
+ CREATE INDEX IF NOT EXISTS "idx_admin_users_role" ON "admin_users" USING btree ("role");--> statement-breakpoint
478
+ CREATE INDEX IF NOT EXISTS "idx_admin_users_created" ON "admin_users" USING btree ("created_at");--> statement-breakpoint
479
+ CREATE INDEX IF NOT EXISTS "idx_admin_users_last_seen" ON "admin_users" USING btree ("last_seen");--> statement-breakpoint
480
+ CREATE INDEX IF NOT EXISTS "idx_affiliate_ref_referrer" ON "affiliate_referrals" USING btree ("referrer_tenant_id");--> statement-breakpoint
481
+ CREATE INDEX IF NOT EXISTS "idx_affiliate_ref_code" ON "affiliate_referrals" USING btree ("code");--> statement-breakpoint
482
+ CREATE INDEX IF NOT EXISTS "idx_fraud_referrer" ON "affiliate_fraud_events" USING btree ("referrer_tenant_id");--> statement-breakpoint
483
+ CREATE INDEX IF NOT EXISTS "idx_fraud_referred" ON "affiliate_fraud_events" USING btree ("referred_tenant_id");--> statement-breakpoint
484
+ CREATE INDEX IF NOT EXISTS "idx_fraud_verdict" ON "affiliate_fraud_events" USING btree ("verdict");--> statement-breakpoint
485
+ CREATE UNIQUE INDEX IF NOT EXISTS "uq_fraud_referral_phase" ON "affiliate_fraud_events" USING btree ("referral_id","phase");--> statement-breakpoint
486
+ CREATE INDEX IF NOT EXISTS "coupon_codes_promotion_idx" ON "coupon_codes" USING btree ("promotion_id");--> statement-breakpoint
487
+ CREATE INDEX IF NOT EXISTS "coupon_codes_assigned_tenant_idx" ON "coupon_codes" USING btree ("assigned_tenant_id");--> statement-breakpoint
488
+ CREATE INDEX IF NOT EXISTS "idx_auto_topup_tenant" ON "credit_auto_topup" USING btree ("tenant_id");--> statement-breakpoint
489
+ CREATE INDEX IF NOT EXISTS "idx_auto_topup_status" ON "credit_auto_topup" USING btree ("status");--> statement-breakpoint
490
+ CREATE INDEX IF NOT EXISTS "idx_auto_topup_created" ON "credit_auto_topup" USING btree ("created_at");--> statement-breakpoint
491
+ CREATE INDEX IF NOT EXISTS "idx_auto_topup_tenant_created" ON "credit_auto_topup" USING btree ("tenant_id","created_at");--> statement-breakpoint
492
+ CREATE INDEX IF NOT EXISTS "idx_auto_topup_settings_usage" ON "credit_auto_topup_settings" USING btree ("usage_enabled");--> statement-breakpoint
493
+ CREATE INDEX IF NOT EXISTS "idx_auto_topup_settings_schedule" ON "credit_auto_topup_settings" USING btree ("schedule_enabled","schedule_next_at");--> statement-breakpoint
494
+ CREATE INDEX IF NOT EXISTS "idx_credit_tx_tenant" ON "credit_transactions" USING btree ("tenant_id");--> statement-breakpoint
495
+ CREATE INDEX IF NOT EXISTS "idx_credit_tx_type" ON "credit_transactions" USING btree ("type");--> statement-breakpoint
496
+ CREATE INDEX IF NOT EXISTS "idx_credit_tx_ref" ON "credit_transactions" USING btree ("reference_id");--> statement-breakpoint
497
+ CREATE INDEX IF NOT EXISTS "idx_credit_tx_created" ON "credit_transactions" USING btree ("created_at");--> statement-breakpoint
498
+ CREATE INDEX IF NOT EXISTS "idx_credit_tx_tenant_created" ON "credit_transactions" USING btree ("tenant_id","created_at");--> statement-breakpoint
499
+ CREATE INDEX IF NOT EXISTS "idx_credit_tx_expires" ON "credit_transactions" USING btree ("expires_at");--> statement-breakpoint
500
+ CREATE INDEX IF NOT EXISTS "idx_credit_tx_fingerprint" ON "credit_transactions" USING btree ("stripe_fingerprint") WHERE "credit_transactions"."stripe_fingerprint" IS NOT NULL;--> statement-breakpoint
501
+ CREATE INDEX IF NOT EXISTS "idx_dividend_dist_tenant" ON "dividend_distributions" USING btree ("tenant_id");--> statement-breakpoint
502
+ CREATE INDEX IF NOT EXISTS "idx_dividend_dist_date" ON "dividend_distributions" USING btree ("date");--> statement-breakpoint
503
+ CREATE INDEX IF NOT EXISTS "idx_dividend_dist_tenant_date" ON "dividend_distributions" USING btree ("tenant_id","date");--> statement-breakpoint
504
+ CREATE INDEX IF NOT EXISTS "idx_email_notif_tenant" ON "email_notifications" USING btree ("tenant_id");--> statement-breakpoint
505
+ CREATE INDEX IF NOT EXISTS "idx_email_notif_type" ON "email_notifications" USING btree ("email_type");--> statement-breakpoint
506
+ CREATE UNIQUE INDEX IF NOT EXISTS "idx_billing_period_unique" ON "billing_period_summaries" USING btree ("tenant","capability","provider","period_start");--> statement-breakpoint
507
+ CREATE INDEX IF NOT EXISTS "idx_billing_period_tenant" ON "billing_period_summaries" USING btree ("tenant","period_start");--> statement-breakpoint
508
+ CREATE INDEX IF NOT EXISTS "idx_billing_period_window" ON "billing_period_summaries" USING btree ("period_start","period_end");--> statement-breakpoint
509
+ CREATE INDEX IF NOT EXISTS "idx_meter_tenant" ON "meter_events" USING btree ("tenant");--> statement-breakpoint
510
+ CREATE INDEX IF NOT EXISTS "idx_meter_timestamp" ON "meter_events" USING btree ("timestamp");--> statement-breakpoint
511
+ CREATE INDEX IF NOT EXISTS "idx_meter_capability" ON "meter_events" USING btree ("capability");--> statement-breakpoint
512
+ CREATE INDEX IF NOT EXISTS "idx_meter_session" ON "meter_events" USING btree ("session_id");--> statement-breakpoint
513
+ CREATE INDEX IF NOT EXISTS "idx_meter_tenant_timestamp" ON "meter_events" USING btree ("tenant","timestamp");--> statement-breakpoint
514
+ CREATE INDEX IF NOT EXISTS "idx_meter_tier" ON "meter_events" USING btree ("tier");--> statement-breakpoint
515
+ CREATE INDEX IF NOT EXISTS "idx_summary_tenant" ON "usage_summaries" USING btree ("tenant","window_start");--> statement-breakpoint
516
+ CREATE INDEX IF NOT EXISTS "idx_summary_window" ON "usage_summaries" USING btree ("window_start","window_end");--> statement-breakpoint
517
+ CREATE INDEX IF NOT EXISTS "idx_notif_queue_tenant" ON "notification_queue" USING btree ("tenant_id");--> statement-breakpoint
518
+ CREATE INDEX IF NOT EXISTS "idx_notif_queue_status" ON "notification_queue" USING btree ("status");--> statement-breakpoint
519
+ CREATE INDEX IF NOT EXISTS "idx_notif_queue_type" ON "notification_queue" USING btree ("email_type");--> statement-breakpoint
520
+ CREATE INDEX IF NOT EXISTS "idx_notif_queue_retry" ON "notification_queue" USING btree ("status","retry_after");--> statement-breakpoint
521
+ CREATE UNIQUE INDEX IF NOT EXISTS "idx_org_memberships_member_unique" ON "org_memberships" USING btree ("member_tenant_id");--> statement-breakpoint
522
+ CREATE INDEX IF NOT EXISTS "idx_org_memberships_org" ON "org_memberships" USING btree ("org_tenant_id");--> statement-breakpoint
523
+ CREATE INDEX IF NOT EXISTS "idx_org_invites_org_id" ON "organization_invites" USING btree ("org_id");--> statement-breakpoint
524
+ CREATE INDEX IF NOT EXISTS "idx_org_invites_token" ON "organization_invites" USING btree ("token");--> statement-breakpoint
525
+ CREATE INDEX IF NOT EXISTS "idx_org_members_org_id" ON "organization_members" USING btree ("org_id");--> statement-breakpoint
526
+ CREATE INDEX IF NOT EXISTS "idx_org_members_user_id" ON "organization_members" USING btree ("user_id");--> statement-breakpoint
527
+ CREATE UNIQUE INDEX IF NOT EXISTS "org_members_org_user_unique" ON "organization_members" USING btree ("org_id","user_id");--> statement-breakpoint
528
+ CREATE INDEX IF NOT EXISTS "idx_payram_charges_tenant" ON "payram_charges" USING btree ("tenant_id");--> statement-breakpoint
529
+ CREATE INDEX IF NOT EXISTS "idx_payram_charges_status" ON "payram_charges" USING btree ("status");--> statement-breakpoint
530
+ CREATE INDEX IF NOT EXISTS "idx_payram_charges_created" ON "payram_charges" USING btree ("created_at");--> statement-breakpoint
531
+ CREATE UNIQUE INDEX IF NOT EXISTS "idx_platform_api_keys_hash" ON "platform_api_keys" USING btree ("key_hash");--> statement-breakpoint
532
+ CREATE INDEX IF NOT EXISTS "idx_platform_api_keys_user" ON "platform_api_keys" USING btree ("user_id");--> statement-breakpoint
533
+ CREATE INDEX IF NOT EXISTS "promotion_redemptions_promotion_idx" ON "promotion_redemptions" USING btree ("promotion_id");--> statement-breakpoint
534
+ CREATE INDEX IF NOT EXISTS "promotion_redemptions_tenant_idx" ON "promotion_redemptions" USING btree ("tenant_id");--> statement-breakpoint
535
+ CREATE INDEX IF NOT EXISTS "promotions_status_idx" ON "promotions" USING btree ("status");--> statement-breakpoint
536
+ CREATE INDEX IF NOT EXISTS "promotions_coupon_code_idx" ON "promotions" USING btree ("coupon_code");--> statement-breakpoint
537
+ CREATE INDEX IF NOT EXISTS "idx_provider_creds_provider" ON "provider_credentials" USING btree ("provider");--> statement-breakpoint
538
+ CREATE INDEX IF NOT EXISTS "idx_provider_creds_active" ON "provider_credentials" USING btree ("provider","is_active");--> statement-breakpoint
539
+ CREATE INDEX IF NOT EXISTS "idx_provider_creds_created_by" ON "provider_credentials" USING btree ("created_by");--> statement-breakpoint
540
+ CREATE INDEX IF NOT EXISTS "idx_rate_limit_window" ON "rate_limit_entries" USING btree ("window_start");--> statement-breakpoint
541
+ CREATE INDEX IF NOT EXISTS "idx_secret_audit_credential" ON "secret_audit_log" USING btree ("credential_id","accessed_at");--> statement-breakpoint
542
+ CREATE INDEX IF NOT EXISTS "idx_secret_audit_accessed_by" ON "secret_audit_log" USING btree ("accessed_by");--> statement-breakpoint
543
+ CREATE INDEX IF NOT EXISTS "idx_session_usage_session" ON "session_usage" USING btree ("session_id");--> statement-breakpoint
544
+ CREATE INDEX IF NOT EXISTS "idx_session_usage_user" ON "session_usage" USING btree ("user_id");--> statement-breakpoint
545
+ CREATE INDEX IF NOT EXISTS "idx_session_usage_created" ON "session_usage" USING btree ("created_at");--> statement-breakpoint
546
+ CREATE INDEX IF NOT EXISTS "idx_session_usage_page" ON "session_usage" USING btree ("page");--> statement-breakpoint
547
+ CREATE INDEX IF NOT EXISTS "idx_tenant_addons_tenant" ON "tenant_addons" USING btree ("tenant_id");--> statement-breakpoint
548
+ CREATE UNIQUE INDEX IF NOT EXISTS "idx_tenant_keys_tenant_provider" ON "tenant_api_keys" USING btree ("tenant_id","provider");--> statement-breakpoint
549
+ CREATE INDEX IF NOT EXISTS "idx_tenant_keys_tenant" ON "tenant_api_keys" USING btree ("tenant_id");--> statement-breakpoint
550
+ CREATE INDEX IF NOT EXISTS "idx_tenant_keys_provider" ON "tenant_api_keys" USING btree ("provider");--> statement-breakpoint
551
+ CREATE UNIQUE INDEX IF NOT EXISTS "idx_stripe_usage_unique" ON "stripe_usage_reports" USING btree ("tenant","capability","provider","period_start");--> statement-breakpoint
552
+ CREATE INDEX IF NOT EXISTS "idx_stripe_usage_tenant" ON "stripe_usage_reports" USING btree ("tenant","reported_at");--> statement-breakpoint
553
+ CREATE INDEX IF NOT EXISTS "idx_tenant_customers_processor" ON "tenant_customers" USING btree ("processor_customer_id");--> statement-breakpoint
554
+ CREATE INDEX IF NOT EXISTS "idx_tenants_slug" ON "tenants" USING btree ("slug");--> statement-breakpoint
555
+ CREATE INDEX IF NOT EXISTS "idx_tenants_owner" ON "tenants" USING btree ("owner_id");--> statement-breakpoint
556
+ CREATE INDEX IF NOT EXISTS "idx_tenants_type" ON "tenants" USING btree ("type");--> statement-breakpoint
557
+ CREATE INDEX IF NOT EXISTS "idx_user_roles_tenant" ON "user_roles" USING btree ("tenant_id");--> statement-breakpoint
558
+ CREATE INDEX IF NOT EXISTS "idx_user_roles_role" ON "user_roles" USING btree ("role");--> statement-breakpoint
559
+ CREATE INDEX IF NOT EXISTS "idx_webhook_seen_expires" ON "webhook_seen_events" USING btree ("seen_at");