@wraps.dev/cli 2.30.3 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/README.md +13 -14
  2. package/dist/cli.js +16266 -17099
  3. package/dist/cli.js.map +1 -1
  4. package/dist/console/assets/index-Cv-QsoKP.css +1 -0
  5. package/dist/console/assets/index-D-ml23Id.js +127 -0
  6. package/dist/console/assets/{index-C6gZtoa3.js → index-OqgjYuh3.js} +1 -1
  7. package/dist/console/assets/{optimizer.worker-DZcD7Kza.js → optimizer.worker-Cjnw_FT2.js} +1 -1
  8. package/dist/console/assets/{webp_enc_simd-D5IXDjAy.js → webp_enc_simd-0PCv9qCn.js} +2 -2
  9. package/dist/console/index.html +2 -2
  10. package/dist/lambda/agent-enforcer/.bundled +1 -1
  11. package/dist/lambda/agent-enforcer/index.js +16 -3
  12. package/dist/lambda/event-processor/.bundled +1 -1
  13. package/dist/lambda/event-processor/index.js +16 -3
  14. package/dist/lambda/inbound-processor/.bundled +1 -1
  15. package/dist/lambda/inbound-processor/index.js +66 -53
  16. package/dist/lambda/sms-event-processor/.bundled +1 -1
  17. package/dist/lambda/sms-event-processor/index.js +16 -3
  18. package/package.json +7 -7
  19. package/dist/api-lambda.zip +0 -0
  20. package/dist/console/assets/index-BP4FpEpn.css +0 -1
  21. package/dist/console/assets/index-P0x5JCC4.js +0 -127
  22. package/dist/selfhost-migrations/0000_absent_rogue.sql +0 -203
  23. package/dist/selfhost-migrations/0001_polite_maverick.sql +0 -17
  24. package/dist/selfhost-migrations/0002_perpetual_scorpion.sql +0 -1
  25. package/dist/selfhost-migrations/0003_wealthy_absorbing_man.sql +0 -1
  26. package/dist/selfhost-migrations/0004_opposite_blur.sql +0 -1
  27. package/dist/selfhost-migrations/0005_clear_terror.sql +0 -4
  28. package/dist/selfhost-migrations/0006_soft_black_widow.sql +0 -20
  29. package/dist/selfhost-migrations/0007_dazzling_saracen.sql +0 -124
  30. package/dist/selfhost-migrations/0008_broad_hannibal_king.sql +0 -33
  31. package/dist/selfhost-migrations/0009_bouncy_mystique.sql +0 -73
  32. package/dist/selfhost-migrations/0010_cheerful_valeria_richards.sql +0 -18
  33. package/dist/selfhost-migrations/0011_absent_thunderbolts.sql +0 -2
  34. package/dist/selfhost-migrations/0012_demonic_donald_blake.sql +0 -1
  35. package/dist/selfhost-migrations/0013_nifty_preak.sql +0 -143
  36. package/dist/selfhost-migrations/0014_hesitant_beast.sql +0 -2
  37. package/dist/selfhost-migrations/0015_blue_giant_girl.sql +0 -1
  38. package/dist/selfhost-migrations/0016_cooing_overlord.sql +0 -1
  39. package/dist/selfhost-migrations/0017_tranquil_ender_wiggin.sql +0 -11
  40. package/dist/selfhost-migrations/0018_talented_groot.sql +0 -8
  41. package/dist/selfhost-migrations/0019_ambitious_devos.sql +0 -3
  42. package/dist/selfhost-migrations/0020_misty_master_mold.sql +0 -95
  43. package/dist/selfhost-migrations/0021_regular_harrier.sql +0 -14
  44. package/dist/selfhost-migrations/0022_sour_blizzard.sql +0 -10
  45. package/dist/selfhost-migrations/0023_flawless_psynapse.sql +0 -1
  46. package/dist/selfhost-migrations/0024_premium_blindfold.sql +0 -1
  47. package/dist/selfhost-migrations/0025_unusual_santa_claus.sql +0 -1
  48. package/dist/selfhost-migrations/0026_volatile_pandemic.sql +0 -2
  49. package/dist/selfhost-migrations/0027_workable_logan.sql +0 -4
  50. package/dist/selfhost-migrations/0028_familiar_prodigy.sql +0 -1
  51. package/dist/selfhost-migrations/0029_cute_maddog.sql +0 -13
  52. package/dist/selfhost-migrations/0030_adorable_scarecrow.sql +0 -1
  53. package/dist/selfhost-migrations/0031_material_slapstick.sql +0 -10
  54. package/dist/selfhost-migrations/0032_hot_dust.sql +0 -11
  55. package/dist/selfhost-migrations/0033_slow_deathbird.sql +0 -1
  56. package/dist/selfhost-migrations/0034_lush_rafael_vega.sql +0 -12
  57. package/dist/selfhost-migrations/0035_normal_red_hulk.sql +0 -8
  58. package/dist/selfhost-migrations/0036_marvelous_ezekiel.sql +0 -1
  59. package/dist/selfhost-migrations/0037_swift_talisman.sql +0 -8
  60. package/dist/selfhost-migrations/0038_first_mandroid.sql +0 -1
  61. package/dist/selfhost-migrations/0039_fixed_stryfe.sql +0 -1
  62. package/dist/selfhost-migrations/0040_add_channel_check_constraints.sql +0 -2
  63. package/dist/selfhost-migrations/0041_black_spencer_smythe.sql +0 -1
  64. package/dist/selfhost-migrations/0042_plain_marvel_zombies.sql +0 -2
  65. package/dist/selfhost-migrations/0043_curved_champions.sql +0 -1
  66. package/dist/selfhost-migrations/0044_clean_iceman.sql +0 -1
  67. package/dist/selfhost-migrations/0045_condemned_steel_serpent.sql +0 -1
  68. package/dist/selfhost-migrations/0046_steep_ultimo.sql +0 -2
  69. package/dist/selfhost-migrations/0047_empty_sleepwalker.sql +0 -2
  70. package/dist/selfhost-migrations/0048_cheerful_multiple_man.sql +0 -1
  71. package/dist/selfhost-migrations/0049_nostalgic_loki.sql +0 -3
  72. package/dist/selfhost-migrations/0050_add_engagement_metadata.sql +0 -4
  73. package/dist/selfhost-migrations/0051_odd_marrow.sql +0 -2
  74. package/dist/selfhost-migrations/0052_redundant_siren.sql +0 -5
  75. package/dist/selfhost-migrations/0053_soft_carnage.sql +0 -31
  76. package/dist/selfhost-migrations/0054_blushing_vin_gonzales.sql +0 -1
  77. package/dist/selfhost-migrations/0055_broadcast_resume_columns.sql +0 -12
  78. package/dist/selfhost-migrations/0056_broadcast_resume_dedup_cleanup.sql +0 -31
  79. package/dist/selfhost-migrations/0057_audit_log_actoremail_jsonb.sql +0 -5
  80. package/dist/selfhost-migrations/0058_email_log_sent_at_idx.sql +0 -1
  81. package/dist/selfhost-migrations/0059_message_send_claimed_at.sql +0 -1
  82. package/dist/selfhost-migrations/0060_harsh_nehzno.sql +0 -1
  83. package/dist/selfhost-migrations/0061_flashy_spirit.sql +0 -1
  84. package/dist/selfhost-migrations/0062_next_timeslip.sql +0 -2
  85. package/dist/selfhost-migrations/0063_greedy_legion.sql +0 -17
  86. package/dist/selfhost-migrations/0064_wise_brood.sql +0 -42
  87. package/dist/selfhost-migrations/0065_public_the_fallen.sql +0 -2
  88. package/dist/selfhost-migrations/0066_odd_yellow_claw.sql +0 -3
  89. package/dist/selfhost-migrations/0067_empty_ultimo.sql +0 -1
  90. package/dist/selfhost-migrations/0068_abandoned_mephisto.sql +0 -1
  91. package/dist/selfhost-migrations/0069_abnormal_zuras.sql +0 -1
  92. package/dist/selfhost-migrations/CLAUDE.md +0 -49
  93. package/dist/selfhost-migrations/meta/0000_snapshot.json +0 -1311
  94. package/dist/selfhost-migrations/meta/0001_snapshot.json +0 -1454
  95. package/dist/selfhost-migrations/meta/0002_snapshot.json +0 -1460
  96. package/dist/selfhost-migrations/meta/0003_snapshot.json +0 -1467
  97. package/dist/selfhost-migrations/meta/0004_snapshot.json +0 -1473
  98. package/dist/selfhost-migrations/meta/0005_snapshot.json +0 -1499
  99. package/dist/selfhost-migrations/meta/0006_snapshot.json +0 -1617
  100. package/dist/selfhost-migrations/meta/0007_snapshot.json +0 -2581
  101. package/dist/selfhost-migrations/meta/0008_snapshot.json +0 -2861
  102. package/dist/selfhost-migrations/meta/0009_snapshot.json +0 -3447
  103. package/dist/selfhost-migrations/meta/0010_snapshot.json +0 -3586
  104. package/dist/selfhost-migrations/meta/0011_snapshot.json +0 -3600
  105. package/dist/selfhost-migrations/meta/0012_snapshot.json +0 -3607
  106. package/dist/selfhost-migrations/meta/0013_snapshot.json +0 -4697
  107. package/dist/selfhost-migrations/meta/0014_snapshot.json +0 -4704
  108. package/dist/selfhost-migrations/meta/0015_snapshot.json +0 -4697
  109. package/dist/selfhost-migrations/meta/0016_snapshot.json +0 -4703
  110. package/dist/selfhost-migrations/meta/0017_snapshot.json +0 -4769
  111. package/dist/selfhost-migrations/meta/0018_snapshot.json +0 -4821
  112. package/dist/selfhost-migrations/meta/0019_snapshot.json +0 -4840
  113. package/dist/selfhost-migrations/meta/0020_snapshot.json +0 -5602
  114. package/dist/selfhost-migrations/meta/0021_snapshot.json +0 -5729
  115. package/dist/selfhost-migrations/meta/0022_snapshot.json +0 -5792
  116. package/dist/selfhost-migrations/meta/0023_snapshot.json +0 -5799
  117. package/dist/selfhost-migrations/meta/0024_snapshot.json +0 -5821
  118. package/dist/selfhost-migrations/meta/0025_snapshot.json +0 -5831
  119. package/dist/selfhost-migrations/meta/0026_snapshot.json +0 -5844
  120. package/dist/selfhost-migrations/meta/0027_snapshot.json +0 -5864
  121. package/dist/selfhost-migrations/meta/0028_snapshot.json +0 -5871
  122. package/dist/selfhost-migrations/meta/0029_snapshot.json +0 -5984
  123. package/dist/selfhost-migrations/meta/0030_snapshot.json +0 -5990
  124. package/dist/selfhost-migrations/meta/0031_snapshot.json +0 -5950
  125. package/dist/selfhost-migrations/meta/0032_snapshot.json +0 -6042
  126. package/dist/selfhost-migrations/meta/0033_snapshot.json +0 -6057
  127. package/dist/selfhost-migrations/meta/0034_snapshot.json +0 -6130
  128. package/dist/selfhost-migrations/meta/0035_snapshot.json +0 -6195
  129. package/dist/selfhost-migrations/meta/0036_snapshot.json +0 -6201
  130. package/dist/selfhost-migrations/meta/0037_snapshot.json +0 -6265
  131. package/dist/selfhost-migrations/meta/0038_snapshot.json +0 -6271
  132. package/dist/selfhost-migrations/meta/0039_snapshot.json +0 -6278
  133. package/dist/selfhost-migrations/meta/0041_snapshot.json +0 -6284
  134. package/dist/selfhost-migrations/meta/0042_snapshot.json +0 -6297
  135. package/dist/selfhost-migrations/meta/0043_snapshot.json +0 -6297
  136. package/dist/selfhost-migrations/meta/0044_snapshot.json +0 -6297
  137. package/dist/selfhost-migrations/meta/0045_snapshot.json +0 -6303
  138. package/dist/selfhost-migrations/meta/0046_snapshot.json +0 -6315
  139. package/dist/selfhost-migrations/meta/0047_snapshot.json +0 -6330
  140. package/dist/selfhost-migrations/meta/0048_snapshot.json +0 -6336
  141. package/dist/selfhost-migrations/meta/0049_snapshot.json +0 -6366
  142. package/dist/selfhost-migrations/meta/0050_snapshot.json +0 -6390
  143. package/dist/selfhost-migrations/meta/0051_snapshot.json +0 -6403
  144. package/dist/selfhost-migrations/meta/0052_snapshot.json +0 -6470
  145. package/dist/selfhost-migrations/meta/0053_snapshot.json +0 -6470
  146. package/dist/selfhost-migrations/meta/0054_snapshot.json +0 -6646
  147. package/dist/selfhost-migrations/meta/0055_snapshot.json +0 -6713
  148. package/dist/selfhost-migrations/meta/0056_snapshot.json +0 -6713
  149. package/dist/selfhost-migrations/meta/0057_snapshot.json +0 -6731
  150. package/dist/selfhost-migrations/meta/0059_snapshot.json +0 -6764
  151. package/dist/selfhost-migrations/meta/0060_snapshot.json +0 -7125
  152. package/dist/selfhost-migrations/meta/0061_snapshot.json +0 -7131
  153. package/dist/selfhost-migrations/meta/0062_snapshot.json +0 -7143
  154. package/dist/selfhost-migrations/meta/0063_snapshot.json +0 -7282
  155. package/dist/selfhost-migrations/meta/0064_snapshot.json +0 -7626
  156. package/dist/selfhost-migrations/meta/0065_snapshot.json +0 -7662
  157. package/dist/selfhost-migrations/meta/0066_snapshot.json +0 -7682
  158. package/dist/selfhost-migrations/meta/0067_snapshot.json +0 -7688
  159. package/dist/selfhost-migrations/meta/0068_snapshot.json +0 -7694
  160. package/dist/selfhost-migrations/meta/0069_snapshot.json +0 -7700
  161. package/dist/selfhost-migrations/meta/_journal.json +0 -496
@@ -1,143 +0,0 @@
1
- CREATE TYPE "public"."batch_send_status" AS ENUM('draft', 'queued', 'processing', 'completed', 'failed', 'cancelled');--> statement-breakpoint
2
- CREATE TYPE "public"."message_send_status" AS ENUM('pending', 'queued', 'sent', 'delivered', 'opened', 'clicked', 'bounced', 'complained', 'failed', 'opted_out');--> statement-breakpoint
3
- CREATE TYPE "public"."message_source_type" AS ENUM('transactional', 'batch', 'campaign', 'workflow');--> statement-breakpoint
4
- CREATE TABLE "batch_send" (
5
- "id" text PRIMARY KEY NOT NULL,
6
- "organization_id" text NOT NULL,
7
- "aws_account_id" text,
8
- "name" text,
9
- "channel" text DEFAULT 'email' NOT NULL,
10
- "subject" text,
11
- "preview_text" text,
12
- "from" text,
13
- "from_name" text,
14
- "reply_to" text,
15
- "email_template_id" text,
16
- "html_content" text,
17
- "text_content" text,
18
- "body" text,
19
- "sender_id" text,
20
- "status" "batch_send_status" DEFAULT 'draft' NOT NULL,
21
- "total_recipients" integer DEFAULT 0 NOT NULL,
22
- "processed_recipients" integer DEFAULT 0 NOT NULL,
23
- "sent" integer DEFAULT 0 NOT NULL,
24
- "delivered" integer DEFAULT 0 NOT NULL,
25
- "failed" integer DEFAULT 0 NOT NULL,
26
- "opened" integer DEFAULT 0 NOT NULL,
27
- "clicked" integer DEFAULT 0 NOT NULL,
28
- "bounced" integer DEFAULT 0 NOT NULL,
29
- "complained" integer DEFAULT 0 NOT NULL,
30
- "sms_segments" integer DEFAULT 0 NOT NULL,
31
- "sms_opted_out" integer DEFAULT 0 NOT NULL,
32
- "error_message" text,
33
- "error_details" json,
34
- "scheduled_for" timestamp,
35
- "started_at" timestamp,
36
- "completed_at" timestamp,
37
- "created_by" text,
38
- "created_at" timestamp DEFAULT now() NOT NULL,
39
- "updated_at" timestamp DEFAULT now() NOT NULL
40
- );
41
- --> statement-breakpoint
42
- CREATE TABLE "message_send" (
43
- "id" text PRIMARY KEY NOT NULL,
44
- "organization_id" text NOT NULL,
45
- "contact_id" text,
46
- "aws_account_id" text NOT NULL,
47
- "channel" text DEFAULT 'email' NOT NULL,
48
- "source_type" "message_source_type" NOT NULL,
49
- "batch_send_id" text,
50
- "recipient" text NOT NULL,
51
- "subject" text,
52
- "from" text,
53
- "from_name" text,
54
- "email_template_id" text,
55
- "body" text,
56
- "sender_id" text,
57
- "sms_segment_count" integer,
58
- "variables" json DEFAULT '{}'::json,
59
- "message_id" text,
60
- "status" "message_send_status" DEFAULT 'pending' NOT NULL,
61
- "sent_at" timestamp,
62
- "delivered_at" timestamp,
63
- "opened_at" timestamp,
64
- "clicked_at" timestamp,
65
- "bounced_at" timestamp,
66
- "complained_at" timestamp,
67
- "opted_out_at" timestamp,
68
- "error" text,
69
- "bounce_type" text,
70
- "bounce_sub_type" text,
71
- "created_at" timestamp DEFAULT now() NOT NULL
72
- );
73
- --> statement-breakpoint
74
- CREATE TABLE "api_rate_limit_window" (
75
- "id" text PRIMARY KEY NOT NULL,
76
- "organization_id" text NOT NULL,
77
- "minute_key" text NOT NULL,
78
- "request_count" integer DEFAULT 0 NOT NULL,
79
- "expires_at" timestamp NOT NULL
80
- );
81
- --> statement-breakpoint
82
- CREATE TABLE "api_usage_daily" (
83
- "id" text PRIMARY KEY NOT NULL,
84
- "organization_id" text NOT NULL,
85
- "date_key" text NOT NULL,
86
- "request_count" integer DEFAULT 0 NOT NULL,
87
- "updated_at" timestamp DEFAULT now() NOT NULL
88
- );
89
- --> statement-breakpoint
90
- DROP INDEX "contact_unique_org_email_idx";--> statement-breakpoint
91
- ALTER TABLE "contact" ALTER COLUMN "email" DROP NOT NULL;--> statement-breakpoint
92
- ALTER TABLE "contact" ALTER COLUMN "email_hash" DROP NOT NULL;--> statement-breakpoint
93
- ALTER TABLE "aws_account" ADD COLUMN "webhook_secret" text;--> statement-breakpoint
94
- ALTER TABLE "contact" ADD COLUMN "email_status" text;--> statement-breakpoint
95
- ALTER TABLE "contact" ADD COLUMN "email_verified_at" timestamp;--> statement-breakpoint
96
- ALTER TABLE "contact" ADD COLUMN "email_unsubscribed_at" timestamp;--> statement-breakpoint
97
- ALTER TABLE "contact" ADD COLUMN "email_bounced_at" timestamp;--> statement-breakpoint
98
- ALTER TABLE "contact" ADD COLUMN "email_complained_at" timestamp;--> statement-breakpoint
99
- ALTER TABLE "contact" ADD COLUMN "phone" text;--> statement-breakpoint
100
- ALTER TABLE "contact" ADD COLUMN "phone_hash" text;--> statement-breakpoint
101
- ALTER TABLE "contact" ADD COLUMN "sms_status" text;--> statement-breakpoint
102
- ALTER TABLE "contact" ADD COLUMN "sms_consented_at" timestamp;--> statement-breakpoint
103
- ALTER TABLE "contact" ADD COLUMN "sms_opted_out_at" timestamp;--> statement-breakpoint
104
- ALTER TABLE "contact" ADD COLUMN "sms_invalid_at" timestamp;--> statement-breakpoint
105
- ALTER TABLE "contact" ADD COLUMN "last_sms_sent_at" timestamp;--> statement-breakpoint
106
- ALTER TABLE "contact" ADD COLUMN "last_sms_clicked_at" timestamp;--> statement-breakpoint
107
- ALTER TABLE "contact" ADD COLUMN "sms_sent" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
108
- ALTER TABLE "contact" ADD COLUMN "sms_clicked" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
109
- ALTER TABLE "batch_send" ADD CONSTRAINT "batch_send_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
110
- ALTER TABLE "batch_send" ADD CONSTRAINT "batch_send_aws_account_id_aws_account_id_fk" FOREIGN KEY ("aws_account_id") REFERENCES "public"."aws_account"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
111
- ALTER TABLE "batch_send" ADD CONSTRAINT "batch_send_email_template_id_template_id_fk" FOREIGN KEY ("email_template_id") REFERENCES "public"."template"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
112
- ALTER TABLE "batch_send" ADD CONSTRAINT "batch_send_created_by_user_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
113
- ALTER TABLE "message_send" ADD CONSTRAINT "message_send_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
114
- ALTER TABLE "message_send" ADD CONSTRAINT "message_send_contact_id_contact_id_fk" FOREIGN KEY ("contact_id") REFERENCES "public"."contact"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
115
- ALTER TABLE "message_send" ADD CONSTRAINT "message_send_aws_account_id_aws_account_id_fk" FOREIGN KEY ("aws_account_id") REFERENCES "public"."aws_account"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
116
- ALTER TABLE "message_send" ADD CONSTRAINT "message_send_batch_send_id_batch_send_id_fk" FOREIGN KEY ("batch_send_id") REFERENCES "public"."batch_send"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
117
- ALTER TABLE "message_send" ADD CONSTRAINT "message_send_email_template_id_template_id_fk" FOREIGN KEY ("email_template_id") REFERENCES "public"."template"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
118
- ALTER TABLE "api_rate_limit_window" ADD CONSTRAINT "api_rate_limit_window_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
119
- ALTER TABLE "api_usage_daily" ADD CONSTRAINT "api_usage_daily_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
120
- CREATE INDEX "batch_send_org_idx" ON "batch_send" USING btree ("organization_id");--> statement-breakpoint
121
- CREATE INDEX "batch_send_channel_idx" ON "batch_send" USING btree ("channel");--> statement-breakpoint
122
- CREATE INDEX "batch_send_status_idx" ON "batch_send" USING btree ("organization_id","status");--> statement-breakpoint
123
- CREATE INDEX "batch_send_created_at_idx" ON "batch_send" USING btree ("organization_id","created_at");--> statement-breakpoint
124
- CREATE INDEX "message_send_org_idx" ON "message_send" USING btree ("organization_id");--> statement-breakpoint
125
- CREATE INDEX "message_send_contact_idx" ON "message_send" USING btree ("contact_id");--> statement-breakpoint
126
- CREATE INDEX "message_send_channel_idx" ON "message_send" USING btree ("channel");--> statement-breakpoint
127
- CREATE INDEX "message_send_batch_idx" ON "message_send" USING btree ("batch_send_id");--> statement-breakpoint
128
- CREATE INDEX "message_send_status_idx" ON "message_send" USING btree ("batch_send_id","status");--> statement-breakpoint
129
- CREATE UNIQUE INDEX "message_send_message_id_idx" ON "message_send" USING btree ("message_id");--> statement-breakpoint
130
- CREATE INDEX "message_send_source_type_idx" ON "message_send" USING btree ("source_type");--> statement-breakpoint
131
- CREATE INDEX "message_send_created_at_idx" ON "message_send" USING btree ("created_at");--> statement-breakpoint
132
- CREATE UNIQUE INDEX "api_rate_limit_org_minute_idx" ON "api_rate_limit_window" USING btree ("organization_id","minute_key");--> statement-breakpoint
133
- CREATE INDEX "api_rate_limit_expires_idx" ON "api_rate_limit_window" USING btree ("expires_at");--> statement-breakpoint
134
- CREATE UNIQUE INDEX "api_usage_daily_org_date_idx" ON "api_usage_daily" USING btree ("organization_id","date_key");--> statement-breakpoint
135
- CREATE INDEX "api_usage_daily_date_idx" ON "api_usage_daily" USING btree ("date_key");--> statement-breakpoint
136
- CREATE INDEX "contact_email_status_idx" ON "contact" USING btree ("organization_id","email_status");--> statement-breakpoint
137
- CREATE INDEX "contact_phone_idx" ON "contact" USING btree ("phone");--> statement-breakpoint
138
- CREATE UNIQUE INDEX "contact_unique_org_phone_idx" ON "contact" USING btree ("organization_id","phone_hash") WHERE phone_hash IS NOT NULL;--> statement-breakpoint
139
- CREATE INDEX "contact_sms_status_idx" ON "contact" USING btree ("organization_id","sms_status");--> statement-breakpoint
140
- CREATE UNIQUE INDEX "contact_unique_org_email_idx" ON "contact" USING btree ("organization_id","email_hash") WHERE email_hash IS NOT NULL;--> statement-breakpoint
141
- ALTER TABLE "organization_extension" DROP COLUMN "plan";--> statement-breakpoint
142
- ALTER TABLE "organization_extension" DROP COLUMN "stripe_customer_id";--> statement-breakpoint
143
- ALTER TABLE "organization_extension" DROP COLUMN "stripe_subscription_id";
@@ -1,2 +0,0 @@
1
- ALTER TYPE "public"."batch_send_status" ADD VALUE 'scheduled' BEFORE 'queued';--> statement-breakpoint
2
- ALTER TABLE "organization" ADD COLUMN "brand_color" text;
@@ -1 +0,0 @@
1
- ALTER TABLE "topic" DROP COLUMN "subscriber_count";
@@ -1 +0,0 @@
1
- ALTER TABLE "contact_topic" ADD COLUMN "confirmed_at" timestamp;
@@ -1,11 +0,0 @@
1
- CREATE TABLE "topic_settings" (
2
- "organization_id" text PRIMARY KEY NOT NULL,
3
- "confirmation_from_name" text,
4
- "confirmation_from_email" text,
5
- "confirmation_reply_to_email" text,
6
- "preference_center_title" text,
7
- "preference_center_description" text,
8
- "updated_at" timestamp DEFAULT now() NOT NULL
9
- );
10
- --> statement-breakpoint
11
- ALTER TABLE "topic_settings" ADD CONSTRAINT "topic_settings_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;
@@ -1,8 +0,0 @@
1
- CREATE TYPE "public"."email_type" AS ENUM('marketing', 'transactional');--> statement-breakpoint
2
- ALTER TABLE "contact" ADD COLUMN "first_name" text;--> statement-breakpoint
3
- ALTER TABLE "contact" ADD COLUMN "last_name" text;--> statement-breakpoint
4
- ALTER TABLE "contact" ADD COLUMN "company" text;--> statement-breakpoint
5
- ALTER TABLE "contact" ADD COLUMN "job_title" text;--> statement-breakpoint
6
- ALTER TABLE "topic_settings" ADD COLUMN "confirmation_template_id" text;--> statement-breakpoint
7
- ALTER TABLE "template" ADD COLUMN "email_type" "email_type" DEFAULT 'marketing' NOT NULL;--> statement-breakpoint
8
- ALTER TABLE "topic_settings" ADD CONSTRAINT "topic_settings_confirmation_template_id_template_id_fk" FOREIGN KEY ("confirmation_template_id") REFERENCES "public"."template"("id") ON DELETE set null ON UPDATE no action;
@@ -1,3 +0,0 @@
1
- ALTER TABLE "batch_send" ADD COLUMN "audience_type" text DEFAULT 'all';--> statement-breakpoint
2
- ALTER TABLE "batch_send" ADD COLUMN "topic_id" text;--> statement-breakpoint
3
- ALTER TABLE "batch_send" ADD COLUMN "segment_id" text;
@@ -1,95 +0,0 @@
1
- CREATE TYPE "public"."workflow_execution_status" AS ENUM('pending', 'active', 'paused', 'waiting', 'completed', 'failed', 'cancelled');--> statement-breakpoint
2
- CREATE TYPE "public"."workflow_status" AS ENUM('draft', 'enabled', 'paused', 'archived');--> statement-breakpoint
3
- CREATE TYPE "public"."workflow_step_execution_status" AS ENUM('pending', 'executing', 'completed', 'failed', 'skipped');--> statement-breakpoint
4
- CREATE TABLE "workflow" (
5
- "id" text PRIMARY KEY NOT NULL,
6
- "organization_id" text NOT NULL,
7
- "aws_account_id" text,
8
- "name" text NOT NULL,
9
- "description" text,
10
- "topic_id" text,
11
- "canvas_viewport" jsonb DEFAULT '{"x":0,"y":0,"zoom":1}'::jsonb,
12
- "status" "workflow_status" DEFAULT 'draft' NOT NULL,
13
- "trigger_type" text,
14
- "trigger_config" jsonb DEFAULT '{}'::jsonb,
15
- "steps" jsonb DEFAULT '[]'::jsonb,
16
- "transitions" jsonb DEFAULT '[]'::jsonb,
17
- "allow_reentry" boolean DEFAULT false NOT NULL,
18
- "reentry_delay_seconds" integer,
19
- "max_concurrent_executions" integer DEFAULT 1000,
20
- "contact_cooldown_seconds" integer,
21
- "total_executions" integer DEFAULT 0 NOT NULL,
22
- "active_executions" integer DEFAULT 0 NOT NULL,
23
- "completed_executions" integer DEFAULT 0 NOT NULL,
24
- "failed_executions" integer DEFAULT 0 NOT NULL,
25
- "dropped_executions" integer DEFAULT 0 NOT NULL,
26
- "ai_generated" boolean DEFAULT false,
27
- "ai_prompt" text,
28
- "last_triggered_at" timestamp,
29
- "created_by" text,
30
- "created_at" timestamp DEFAULT now() NOT NULL,
31
- "updated_at" timestamp DEFAULT now() NOT NULL
32
- );
33
- --> statement-breakpoint
34
- CREATE TABLE "workflow_execution" (
35
- "id" text PRIMARY KEY NOT NULL,
36
- "workflow_id" text NOT NULL,
37
- "contact_id" text NOT NULL,
38
- "organization_id" text NOT NULL,
39
- "status" "workflow_execution_status" DEFAULT 'pending' NOT NULL,
40
- "current_step_id" text,
41
- "context" jsonb DEFAULT '{}'::jsonb,
42
- "trigger_event_id" text,
43
- "trigger_data" jsonb,
44
- "waiting_for_event" text,
45
- "waiting_for_conditions" jsonb,
46
- "wait_timeout_at" timestamp,
47
- "wait_timeout_scheduler_name" text,
48
- "next_step_scheduled_at" timestamp,
49
- "delay_scheduler_name" text,
50
- "error" text,
51
- "error_step_id" text,
52
- "retry_count" integer DEFAULT 0,
53
- "started_at" timestamp,
54
- "completed_at" timestamp,
55
- "created_at" timestamp DEFAULT now() NOT NULL,
56
- "updated_at" timestamp DEFAULT now() NOT NULL
57
- );
58
- --> statement-breakpoint
59
- CREATE TABLE "workflow_step_execution" (
60
- "id" text PRIMARY KEY NOT NULL,
61
- "execution_id" text NOT NULL,
62
- "step_id" text NOT NULL,
63
- "step_type" text NOT NULL,
64
- "status" "workflow_step_execution_status" DEFAULT 'pending' NOT NULL,
65
- "idempotency_key" text NOT NULL,
66
- "branch" text,
67
- "result" jsonb,
68
- "error" text,
69
- "skip_reason" text,
70
- "started_at" timestamp,
71
- "completed_at" timestamp,
72
- "created_at" timestamp DEFAULT now() NOT NULL
73
- );
74
- --> statement-breakpoint
75
- ALTER TABLE "workflow" ADD CONSTRAINT "workflow_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
76
- ALTER TABLE "workflow" ADD CONSTRAINT "workflow_aws_account_id_aws_account_id_fk" FOREIGN KEY ("aws_account_id") REFERENCES "public"."aws_account"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
77
- ALTER TABLE "workflow" ADD CONSTRAINT "workflow_topic_id_topic_id_fk" FOREIGN KEY ("topic_id") REFERENCES "public"."topic"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
78
- ALTER TABLE "workflow" ADD CONSTRAINT "workflow_created_by_user_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
79
- ALTER TABLE "workflow_execution" ADD CONSTRAINT "workflow_execution_workflow_id_workflow_id_fk" FOREIGN KEY ("workflow_id") REFERENCES "public"."workflow"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
80
- ALTER TABLE "workflow_execution" ADD CONSTRAINT "workflow_execution_contact_id_contact_id_fk" FOREIGN KEY ("contact_id") REFERENCES "public"."contact"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
81
- ALTER TABLE "workflow_execution" ADD CONSTRAINT "workflow_execution_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
82
- ALTER TABLE "workflow_step_execution" ADD CONSTRAINT "workflow_step_execution_execution_id_workflow_execution_id_fk" FOREIGN KEY ("execution_id") REFERENCES "public"."workflow_execution"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
83
- CREATE INDEX "workflow_org_idx" ON "workflow" USING btree ("organization_id");--> statement-breakpoint
84
- CREATE INDEX "workflow_status_idx" ON "workflow" USING btree ("organization_id","status");--> statement-breakpoint
85
- CREATE INDEX "workflow_trigger_type_idx" ON "workflow" USING btree ("organization_id","trigger_type");--> statement-breakpoint
86
- CREATE INDEX "workflow_aws_account_idx" ON "workflow" USING btree ("aws_account_id");--> statement-breakpoint
87
- CREATE INDEX "workflow_execution_workflow_idx" ON "workflow_execution" USING btree ("workflow_id");--> statement-breakpoint
88
- CREATE INDEX "workflow_execution_contact_idx" ON "workflow_execution" USING btree ("contact_id");--> statement-breakpoint
89
- CREATE INDEX "workflow_execution_org_idx" ON "workflow_execution" USING btree ("organization_id");--> statement-breakpoint
90
- CREATE INDEX "workflow_execution_status_idx" ON "workflow_execution" USING btree ("workflow_id","status");--> statement-breakpoint
91
- CREATE INDEX "workflow_execution_org_status_idx" ON "workflow_execution" USING btree ("organization_id","status");--> statement-breakpoint
92
- CREATE INDEX "workflow_execution_scheduled_idx" ON "workflow_execution" USING btree ("next_step_scheduled_at");--> statement-breakpoint
93
- CREATE INDEX "workflow_execution_waiting_event_idx" ON "workflow_execution" USING btree ("organization_id","waiting_for_event");--> statement-breakpoint
94
- CREATE INDEX "workflow_step_execution_execution_idx" ON "workflow_step_execution" USING btree ("execution_id");--> statement-breakpoint
95
- CREATE UNIQUE INDEX "workflow_step_execution_idempotency_idx" ON "workflow_step_execution" USING btree ("idempotency_key");
@@ -1,14 +0,0 @@
1
- CREATE TABLE "contact_event" (
2
- "id" text PRIMARY KEY NOT NULL,
3
- "contact_id" text NOT NULL,
4
- "organization_id" text NOT NULL,
5
- "event_name" text NOT NULL,
6
- "event_data" json,
7
- "created_at" timestamp DEFAULT now() NOT NULL
8
- );
9
- --> statement-breakpoint
10
- ALTER TABLE "contact_event" ADD CONSTRAINT "contact_event_contact_id_contact_id_fk" FOREIGN KEY ("contact_id") REFERENCES "public"."contact"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
11
- ALTER TABLE "contact_event" ADD CONSTRAINT "contact_event_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
12
- CREATE INDEX "contact_event_contact_idx" ON "contact_event" USING btree ("contact_id");--> statement-breakpoint
13
- CREATE INDEX "contact_event_org_event_idx" ON "contact_event" USING btree ("organization_id","event_name");--> statement-breakpoint
14
- CREATE INDEX "contact_event_contact_event_idx" ON "contact_event" USING btree ("contact_id","event_name");
@@ -1,10 +0,0 @@
1
- ALTER TABLE "organization_extension" ADD COLUMN "default_aws_account_id" text;--> statement-breakpoint
2
- ALTER TABLE "organization_extension" ADD COLUMN "default_from" text;--> statement-breakpoint
3
- ALTER TABLE "organization_extension" ADD COLUMN "default_from_name" text;--> statement-breakpoint
4
- ALTER TABLE "organization_extension" ADD COLUMN "default_reply_to" text;--> statement-breakpoint
5
- ALTER TABLE "organization_extension" ADD COLUMN "default_sender_id" text;--> statement-breakpoint
6
- ALTER TABLE "workflow" ADD COLUMN "default_from" text;--> statement-breakpoint
7
- ALTER TABLE "workflow" ADD COLUMN "default_from_name" text;--> statement-breakpoint
8
- ALTER TABLE "workflow" ADD COLUMN "default_reply_to" text;--> statement-breakpoint
9
- ALTER TABLE "workflow" ADD COLUMN "default_sender_id" text;--> statement-breakpoint
10
- ALTER TABLE "organization_extension" ADD CONSTRAINT "organization_extension_default_aws_account_id_aws_account_id_fk" FOREIGN KEY ("default_aws_account_id") REFERENCES "public"."aws_account"("id") ON DELETE set null ON UPDATE no action;
@@ -1 +0,0 @@
1
- ALTER TABLE "workflow_execution" ADD COLUMN "allow_reentry" boolean DEFAULT false NOT NULL;
@@ -1 +0,0 @@
1
- CREATE UNIQUE INDEX "workflow_execution_no_reentry_idx" ON "workflow_execution" USING btree ("workflow_id","contact_id") WHERE "workflow_execution"."status" IN ('pending', 'active', 'paused', 'waiting') AND "workflow_execution"."allow_reentry" = false;
@@ -1 +0,0 @@
1
- ALTER TABLE "subscription" ADD CONSTRAINT "subscription_reference_id_organization_id_fk" FOREIGN KEY ("reference_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;
@@ -1,2 +0,0 @@
1
- ALTER TABLE "user" ADD COLUMN "phone_number" text;--> statement-breakpoint
2
- ALTER TABLE "user" ADD COLUMN "login_alerts_enabled" boolean DEFAULT false;
@@ -1,4 +0,0 @@
1
- ALTER TYPE "public"."message_send_status" ADD VALUE 'suppressed' BEFORE 'failed';--> statement-breakpoint
2
- ALTER TABLE "batch_send" ADD COLUMN "suppressed" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
3
- ALTER TABLE "message_send" ADD COLUMN "suppressed_at" timestamp;--> statement-breakpoint
4
- ALTER TABLE "contact" ADD COLUMN "email_suppressed_at" timestamp;
@@ -1 +0,0 @@
1
- ALTER TABLE "subscription" ADD COLUMN "annual" boolean DEFAULT false;
@@ -1,13 +0,0 @@
1
- CREATE TABLE "event_usage_monthly" (
2
- "id" text PRIMARY KEY NOT NULL,
3
- "organization_id" text NOT NULL,
4
- "period_key" text NOT NULL,
5
- "event_count" integer DEFAULT 0 NOT NULL,
6
- "updated_at" timestamp DEFAULT now() NOT NULL
7
- );
8
- --> statement-breakpoint
9
- ALTER TABLE "contact_event" ADD COLUMN "expires_at" timestamp;--> statement-breakpoint
10
- ALTER TABLE "event_usage_monthly" ADD CONSTRAINT "event_usage_monthly_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
11
- CREATE UNIQUE INDEX "event_usage_monthly_org_period_idx" ON "event_usage_monthly" USING btree ("organization_id","period_key");--> statement-breakpoint
12
- CREATE INDEX "event_usage_monthly_period_idx" ON "event_usage_monthly" USING btree ("period_key");--> statement-breakpoint
13
- CREATE INDEX "contact_event_expires_idx" ON "contact_event" USING btree ("expires_at");
@@ -1 +0,0 @@
1
- ALTER TABLE "organization" ADD COLUMN "stripe_organization_id" text;
@@ -1,10 +0,0 @@
1
- ALTER TABLE "aws_account" ADD COLUMN "email_enabled" boolean DEFAULT false NOT NULL;--> statement-breakpoint
2
- ALTER TABLE "aws_account" ADD COLUMN "features" json;--> statement-breakpoint
3
- ALTER TABLE "aws_account" DROP COLUMN "archiving_enabled";--> statement-breakpoint
4
- ALTER TABLE "aws_account" DROP COLUMN "archive_arn";--> statement-breakpoint
5
- ALTER TABLE "aws_account" DROP COLUMN "event_history_enabled";--> statement-breakpoint
6
- ALTER TABLE "aws_account" DROP COLUMN "event_tracking_enabled";--> statement-breakpoint
7
- ALTER TABLE "aws_account" DROP COLUMN "config_set_name";--> statement-breakpoint
8
- ALTER TABLE "aws_account" DROP COLUMN "custom_tracking_domain";--> statement-breakpoint
9
- ALTER TABLE "aws_account" DROP COLUMN "sms_phone_number_count";--> statement-breakpoint
10
- ALTER TABLE "aws_account" DROP COLUMN "sms_event_history_enabled";
@@ -1,11 +0,0 @@
1
- CREATE TABLE "message_usage_monthly" (
2
- "id" text PRIMARY KEY NOT NULL,
3
- "organization_id" text NOT NULL,
4
- "period_key" text NOT NULL,
5
- "message_count" integer DEFAULT 0 NOT NULL,
6
- "updated_at" timestamp DEFAULT now() NOT NULL
7
- );
8
- --> statement-breakpoint
9
- ALTER TABLE "message_usage_monthly" ADD CONSTRAINT "message_usage_monthly_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
10
- CREATE UNIQUE INDEX "message_usage_monthly_org_period_idx" ON "message_usage_monthly" USING btree ("organization_id","period_key");--> statement-breakpoint
11
- CREATE INDEX "message_usage_monthly_period_idx" ON "message_usage_monthly" USING btree ("period_key");
@@ -1 +0,0 @@
1
- CREATE UNIQUE INDEX "api_key_key_hash_idx" ON "api_key" USING btree ("key_hash");
@@ -1,12 +0,0 @@
1
- CREATE TABLE "device_code" (
2
- "id" text PRIMARY KEY NOT NULL,
3
- "device_code" text NOT NULL,
4
- "user_code" text NOT NULL,
5
- "user_id" text,
6
- "expires_at" timestamp NOT NULL,
7
- "status" text NOT NULL,
8
- "last_polled_at" timestamp,
9
- "polling_interval" integer,
10
- "client_id" text,
11
- "scope" text
12
- );
@@ -1,8 +0,0 @@
1
- ALTER TABLE "template" ADD COLUMN "slug" text;--> statement-breakpoint
2
- ALTER TABLE "template" ADD COLUMN "source" text;--> statement-breakpoint
3
- ALTER TABLE "template" ADD COLUMN "source_format" text DEFAULT 'tiptap' NOT NULL;--> statement-breakpoint
4
- ALTER TABLE "template" ADD COLUMN "source_hash" text;--> statement-breakpoint
5
- ALTER TABLE "template" ADD COLUMN "pushed_from_cli" boolean DEFAULT false NOT NULL;--> statement-breakpoint
6
- ALTER TABLE "template" ADD COLUMN "last_pushed_at" timestamp;--> statement-breakpoint
7
- ALTER TABLE "template" ADD COLUMN "cli_project_path" text;--> statement-breakpoint
8
- CREATE UNIQUE INDEX "template_org_slug_idx" ON "template" USING btree ("organization_id","slug");
@@ -1 +0,0 @@
1
- ALTER TABLE "template" ADD COLUMN "last_edited_from" text;
@@ -1,8 +0,0 @@
1
- ALTER TABLE "workflow" ADD COLUMN "slug" text;--> statement-breakpoint
2
- ALTER TABLE "workflow" ADD COLUMN "source_ts" text;--> statement-breakpoint
3
- ALTER TABLE "workflow" ADD COLUMN "source_hash" text;--> statement-breakpoint
4
- ALTER TABLE "workflow" ADD COLUMN "pushed_from_cli" boolean DEFAULT false;--> statement-breakpoint
5
- ALTER TABLE "workflow" ADD COLUMN "last_pushed_at" timestamp;--> statement-breakpoint
6
- ALTER TABLE "workflow" ADD COLUMN "cli_project_path" text;--> statement-breakpoint
7
- ALTER TABLE "workflow" ADD COLUMN "last_edited_from" text;--> statement-breakpoint
8
- CREATE UNIQUE INDEX "workflow_org_slug_idx" ON "workflow" USING btree ("organization_id","slug");
@@ -1 +0,0 @@
1
- ALTER TABLE "contact" ADD COLUMN "preferred_channel" text;
@@ -1 +0,0 @@
1
- ALTER TABLE "template" ADD COLUMN "channel" text DEFAULT 'email' NOT NULL;
@@ -1,2 +0,0 @@
1
- ALTER TABLE "contact" ADD CONSTRAINT "contact_preferred_channel_check" CHECK ("preferred_channel" IN ('email', 'sms'));
2
- ALTER TABLE "template" ADD CONSTRAINT "template_channel_check" CHECK ("channel" IN ('email', 'sms'));
@@ -1 +0,0 @@
1
- ALTER TABLE "batch_send" ADD COLUMN "variable_mappings" json;
@@ -1,2 +0,0 @@
1
- ALTER TABLE "workflow" ADD COLUMN "version" integer DEFAULT 1 NOT NULL;--> statement-breakpoint
2
- ALTER TABLE "workflow_execution" ADD COLUMN "definition_snapshot" jsonb;
@@ -1 +0,0 @@
1
- ALTER TABLE "template" ALTER COLUMN "created_by" DROP NOT NULL;
@@ -1 +0,0 @@
1
- ALTER TABLE "template" ALTER COLUMN "source_format" SET DEFAULT 'react-email';
@@ -1 +0,0 @@
1
- ALTER TABLE "template" ADD COLUMN "preview_text" text;
@@ -1,2 +0,0 @@
1
- ALTER TABLE "template_version" ADD COLUMN "source" text;--> statement-breakpoint
2
- ALTER TABLE "template_version" ADD COLUMN "compiled_html" text;
@@ -1,2 +0,0 @@
1
- ALTER TABLE "template" ADD COLUMN "brand_kit_id" text;--> statement-breakpoint
2
- ALTER TABLE "template" ADD CONSTRAINT "template_brand_kit_id_brand_kit_id_fk" FOREIGN KEY ("brand_kit_id") REFERENCES "public"."brand_kit"("id") ON DELETE set null ON UPDATE no action;
@@ -1 +0,0 @@
1
- ALTER TABLE "message_send" ADD COLUMN "clicked_url" text;
@@ -1,3 +0,0 @@
1
- ALTER TABLE "message_send" ADD COLUMN "workflow_execution_id" text;--> statement-breakpoint
2
- ALTER TABLE "message_send" ADD CONSTRAINT "message_send_workflow_execution_id_workflow_execution_id_fk" FOREIGN KEY ("workflow_execution_id") REFERENCES "public"."workflow_execution"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
3
- CREATE INDEX "message_send_workflow_execution_idx" ON "message_send" USING btree ("workflow_execution_id");
@@ -1,4 +0,0 @@
1
- ALTER TABLE "message_send" ADD COLUMN "open_user_agent" text;--> statement-breakpoint
2
- ALTER TABLE "message_send" ADD COLUMN "open_ip_address" text;--> statement-breakpoint
3
- ALTER TABLE "message_send" ADD COLUMN "click_user_agent" text;--> statement-breakpoint
4
- ALTER TABLE "message_send" ADD COLUMN "click_ip_address" text;
@@ -1,2 +0,0 @@
1
- ALTER TABLE "organization_extension" ADD COLUMN "onboarding_path" text;--> statement-breakpoint
2
- ALTER TABLE "organization_extension" ADD COLUMN "activation_score" integer DEFAULT 0 NOT NULL;
@@ -1,5 +0,0 @@
1
- DROP INDEX "aws_account_permission_unique_idx";--> statement-breakpoint
2
- ALTER TABLE "template_version" ALTER COLUMN "created_by" DROP NOT NULL;--> statement-breakpoint
3
- ALTER TABLE "contact" ADD COLUMN "external_id" text;--> statement-breakpoint
4
- CREATE UNIQUE INDEX "contact_unique_org_external_id_idx" ON "contact" USING btree ("organization_id","external_id") WHERE external_id IS NOT NULL;--> statement-breakpoint
5
- CREATE UNIQUE INDEX "aws_account_permission_unique_idx" ON "aws_account_permission" USING btree ("user_id","aws_account_id");
@@ -1,31 +0,0 @@
1
- CREATE TABLE "scim_provider" (
2
- "id" text PRIMARY KEY NOT NULL,
3
- "provider_id" text NOT NULL,
4
- "scim_token" text NOT NULL,
5
- "organization_id" text,
6
- "user_id" text,
7
- "created_at" timestamp DEFAULT now() NOT NULL,
8
- "updated_at" timestamp DEFAULT now() NOT NULL
9
- );
10
- --> statement-breakpoint
11
- CREATE TABLE "sso_provider" (
12
- "id" text PRIMARY KEY NOT NULL,
13
- "provider_id" text NOT NULL,
14
- "issuer" text NOT NULL,
15
- "domain" text NOT NULL,
16
- "oidc_config" text,
17
- "saml_config" text,
18
- "user_id" text,
19
- "organization_id" text NOT NULL,
20
- "domain_verified" boolean DEFAULT false NOT NULL,
21
- "created_at" timestamp DEFAULT now() NOT NULL,
22
- "updated_at" timestamp DEFAULT now() NOT NULL,
23
- CONSTRAINT "sso_provider_provider_id_unique" UNIQUE("provider_id")
24
- );
25
- --> statement-breakpoint
26
- ALTER TABLE "scim_provider" ADD CONSTRAINT "scim_provider_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
27
- ALTER TABLE "scim_provider" ADD CONSTRAINT "scim_provider_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
28
- ALTER TABLE "sso_provider" ADD CONSTRAINT "sso_provider_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
29
- ALTER TABLE "sso_provider" ADD CONSTRAINT "sso_provider_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
30
- CREATE INDEX "scim_provider_org_idx" ON "scim_provider" USING btree ("organization_id");--> statement-breakpoint
31
- CREATE INDEX "sso_provider_org_idx" ON "sso_provider" USING btree ("organization_id");
@@ -1 +0,0 @@
1
- ALTER TABLE "scim_provider" ALTER COLUMN "organization_id" SET NOT NULL;
@@ -1,12 +0,0 @@
1
- DROP INDEX "aws_account_permission_unique_idx";--> statement-breakpoint
2
- ALTER TABLE "template_version" ALTER COLUMN "created_by" DROP NOT NULL;--> statement-breakpoint
3
- ALTER TABLE "batch_send" ADD COLUMN "last_chunk_at" timestamp;--> statement-breakpoint
4
- ALTER TABLE "batch_send" ADD COLUMN "last_chunk_index" integer;--> statement-breakpoint
5
- ALTER TABLE "batch_send" ADD COLUMN "last_cursor" json;--> statement-breakpoint
6
- -- NOTE: "message_send_dedup_idx" and "contact_keyset_idx" are declared in the
7
- -- Drizzle schema but are created out-of-band via
8
- -- packages/db/scripts/create-broadcast-resume-indexes.ts (CREATE INDEX
9
- -- CONCURRENTLY). drizzle-kit cannot run CONCURRENTLY inside a txn block.
10
- -- Run that script AFTER this migration applies but BEFORE shipping the DLQ
11
- -- consumer or worker resume columns are used in production.
12
- CREATE UNIQUE INDEX "aws_account_permission_unique_idx" ON "aws_account_permission" USING btree ("user_id","aws_account_id");
@@ -1,31 +0,0 @@
1
- -- Broadcast Resume: message_send dedup cleanup
2
- --
3
- -- Before the CONCURRENT unique-index script can run, any existing
4
- -- duplicate (batch_send_id, contact_id) tuples on message_send must be
5
- -- removed. Keeps the oldest row per (batch_send_id, contact_id) group.
6
- --
7
- -- Pre-flight guard: abort if the duplicate-candidate set is unexpectedly
8
- -- large. If you hit this guard, run the DELETE manually with chunking
9
- -- and then retry the migration.
10
-
11
- DO $$
12
- BEGIN
13
- IF (SELECT COUNT(*) FROM message_send WHERE contact_id IS NOT NULL) > 5000000 THEN
14
- RAISE EXCEPTION 'Too many message_send rows (>5M); run dedup cleanup manually in chunks before re-running this migration';
15
- END IF;
16
- END $$;
17
- --> statement-breakpoint
18
- DELETE FROM message_send
19
- WHERE id IN (
20
- SELECT id FROM (
21
- SELECT
22
- id,
23
- ROW_NUMBER() OVER (
24
- PARTITION BY batch_send_id, contact_id
25
- ORDER BY created_at, id
26
- ) AS rn
27
- FROM message_send
28
- WHERE contact_id IS NOT NULL
29
- ) x
30
- WHERE rn > 1
31
- );
@@ -1,5 +0,0 @@
1
- ALTER TABLE "audit_log" ADD COLUMN "actor_email" text;--> statement-breakpoint
2
- ALTER TABLE "audit_log" ALTER COLUMN "metadata" SET DATA TYPE jsonb USING metadata::text::jsonb;--> statement-breakpoint
3
- DROP INDEX IF EXISTS "audit_log_org_idx";--> statement-breakpoint
4
- DROP INDEX IF EXISTS "audit_log_timestamp_idx";--> statement-breakpoint
5
- CREATE INDEX "audit_log_org_created_idx" ON "audit_log" ("organization_id","created_at");
@@ -1 +0,0 @@
1
- CREATE INDEX IF NOT EXISTS "message_send_org_channel_sent_at_idx" ON "message_send" ("organization_id","channel","sent_at");
@@ -1 +0,0 @@
1
- ALTER TABLE "message_send" ADD COLUMN "claimed_at" timestamp;
@@ -1 +0,0 @@
1
- ALTER TABLE "organization_extension" ADD COLUMN "activation_first_email_tracked_at" timestamp;
@@ -1 +0,0 @@
1
- ALTER TABLE "aws_account" ADD COLUMN "last_event_received_at" timestamp;
@@ -1,2 +0,0 @@
1
- ALTER TABLE "aws_account" ADD COLUMN "event_feed_stale_since" timestamp;--> statement-breakpoint
2
- ALTER TABLE "aws_account" ADD COLUMN "event_feed_alerted_at" timestamp;