@wraps.dev/cli 2.30.2 → 3.0.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 (147) hide show
  1. package/README.md +11 -14
  2. package/dist/cli.js +952 -2214
  3. package/dist/cli.js.map +1 -1
  4. package/dist/console/assets/{index-P0x5JCC4.js → index--39O8UcT.js} +3 -3
  5. package/dist/console/assets/index-D6au_OkL.css +1 -0
  6. package/dist/console/index.html +2 -2
  7. package/dist/lambda/agent-enforcer/.bundled +1 -1
  8. package/dist/lambda/event-processor/.bundled +1 -1
  9. package/dist/lambda/inbound-processor/.bundled +1 -1
  10. package/dist/lambda/sms-event-processor/.bundled +1 -1
  11. package/package.json +3 -4
  12. package/dist/api-lambda.zip +0 -0
  13. package/dist/console/assets/index-BP4FpEpn.css +0 -1
  14. package/dist/selfhost-migrations/0000_absent_rogue.sql +0 -203
  15. package/dist/selfhost-migrations/0001_polite_maverick.sql +0 -17
  16. package/dist/selfhost-migrations/0002_perpetual_scorpion.sql +0 -1
  17. package/dist/selfhost-migrations/0003_wealthy_absorbing_man.sql +0 -1
  18. package/dist/selfhost-migrations/0004_opposite_blur.sql +0 -1
  19. package/dist/selfhost-migrations/0005_clear_terror.sql +0 -4
  20. package/dist/selfhost-migrations/0006_soft_black_widow.sql +0 -20
  21. package/dist/selfhost-migrations/0007_dazzling_saracen.sql +0 -124
  22. package/dist/selfhost-migrations/0008_broad_hannibal_king.sql +0 -33
  23. package/dist/selfhost-migrations/0009_bouncy_mystique.sql +0 -73
  24. package/dist/selfhost-migrations/0010_cheerful_valeria_richards.sql +0 -18
  25. package/dist/selfhost-migrations/0011_absent_thunderbolts.sql +0 -2
  26. package/dist/selfhost-migrations/0012_demonic_donald_blake.sql +0 -1
  27. package/dist/selfhost-migrations/0013_nifty_preak.sql +0 -143
  28. package/dist/selfhost-migrations/0014_hesitant_beast.sql +0 -2
  29. package/dist/selfhost-migrations/0015_blue_giant_girl.sql +0 -1
  30. package/dist/selfhost-migrations/0016_cooing_overlord.sql +0 -1
  31. package/dist/selfhost-migrations/0017_tranquil_ender_wiggin.sql +0 -11
  32. package/dist/selfhost-migrations/0018_talented_groot.sql +0 -8
  33. package/dist/selfhost-migrations/0019_ambitious_devos.sql +0 -3
  34. package/dist/selfhost-migrations/0020_misty_master_mold.sql +0 -95
  35. package/dist/selfhost-migrations/0021_regular_harrier.sql +0 -14
  36. package/dist/selfhost-migrations/0022_sour_blizzard.sql +0 -10
  37. package/dist/selfhost-migrations/0023_flawless_psynapse.sql +0 -1
  38. package/dist/selfhost-migrations/0024_premium_blindfold.sql +0 -1
  39. package/dist/selfhost-migrations/0025_unusual_santa_claus.sql +0 -1
  40. package/dist/selfhost-migrations/0026_volatile_pandemic.sql +0 -2
  41. package/dist/selfhost-migrations/0027_workable_logan.sql +0 -4
  42. package/dist/selfhost-migrations/0028_familiar_prodigy.sql +0 -1
  43. package/dist/selfhost-migrations/0029_cute_maddog.sql +0 -13
  44. package/dist/selfhost-migrations/0030_adorable_scarecrow.sql +0 -1
  45. package/dist/selfhost-migrations/0031_material_slapstick.sql +0 -10
  46. package/dist/selfhost-migrations/0032_hot_dust.sql +0 -11
  47. package/dist/selfhost-migrations/0033_slow_deathbird.sql +0 -1
  48. package/dist/selfhost-migrations/0034_lush_rafael_vega.sql +0 -12
  49. package/dist/selfhost-migrations/0035_normal_red_hulk.sql +0 -8
  50. package/dist/selfhost-migrations/0036_marvelous_ezekiel.sql +0 -1
  51. package/dist/selfhost-migrations/0037_swift_talisman.sql +0 -8
  52. package/dist/selfhost-migrations/0038_first_mandroid.sql +0 -1
  53. package/dist/selfhost-migrations/0039_fixed_stryfe.sql +0 -1
  54. package/dist/selfhost-migrations/0040_add_channel_check_constraints.sql +0 -2
  55. package/dist/selfhost-migrations/0041_black_spencer_smythe.sql +0 -1
  56. package/dist/selfhost-migrations/0042_plain_marvel_zombies.sql +0 -2
  57. package/dist/selfhost-migrations/0043_curved_champions.sql +0 -1
  58. package/dist/selfhost-migrations/0044_clean_iceman.sql +0 -1
  59. package/dist/selfhost-migrations/0045_condemned_steel_serpent.sql +0 -1
  60. package/dist/selfhost-migrations/0046_steep_ultimo.sql +0 -2
  61. package/dist/selfhost-migrations/0047_empty_sleepwalker.sql +0 -2
  62. package/dist/selfhost-migrations/0048_cheerful_multiple_man.sql +0 -1
  63. package/dist/selfhost-migrations/0049_nostalgic_loki.sql +0 -3
  64. package/dist/selfhost-migrations/0050_add_engagement_metadata.sql +0 -4
  65. package/dist/selfhost-migrations/0051_odd_marrow.sql +0 -2
  66. package/dist/selfhost-migrations/0052_redundant_siren.sql +0 -5
  67. package/dist/selfhost-migrations/0053_soft_carnage.sql +0 -31
  68. package/dist/selfhost-migrations/0054_blushing_vin_gonzales.sql +0 -1
  69. package/dist/selfhost-migrations/0055_broadcast_resume_columns.sql +0 -12
  70. package/dist/selfhost-migrations/0056_broadcast_resume_dedup_cleanup.sql +0 -31
  71. package/dist/selfhost-migrations/0057_audit_log_actoremail_jsonb.sql +0 -5
  72. package/dist/selfhost-migrations/0058_email_log_sent_at_idx.sql +0 -1
  73. package/dist/selfhost-migrations/0059_message_send_claimed_at.sql +0 -1
  74. package/dist/selfhost-migrations/0060_harsh_nehzno.sql +0 -1
  75. package/dist/selfhost-migrations/0061_flashy_spirit.sql +0 -1
  76. package/dist/selfhost-migrations/0062_next_timeslip.sql +0 -2
  77. package/dist/selfhost-migrations/0063_greedy_legion.sql +0 -17
  78. package/dist/selfhost-migrations/0064_wise_brood.sql +0 -42
  79. package/dist/selfhost-migrations/0065_public_the_fallen.sql +0 -2
  80. package/dist/selfhost-migrations/0066_odd_yellow_claw.sql +0 -3
  81. package/dist/selfhost-migrations/CLAUDE.md +0 -49
  82. package/dist/selfhost-migrations/meta/0000_snapshot.json +0 -1311
  83. package/dist/selfhost-migrations/meta/0001_snapshot.json +0 -1454
  84. package/dist/selfhost-migrations/meta/0002_snapshot.json +0 -1460
  85. package/dist/selfhost-migrations/meta/0003_snapshot.json +0 -1467
  86. package/dist/selfhost-migrations/meta/0004_snapshot.json +0 -1473
  87. package/dist/selfhost-migrations/meta/0005_snapshot.json +0 -1499
  88. package/dist/selfhost-migrations/meta/0006_snapshot.json +0 -1617
  89. package/dist/selfhost-migrations/meta/0007_snapshot.json +0 -2581
  90. package/dist/selfhost-migrations/meta/0008_snapshot.json +0 -2861
  91. package/dist/selfhost-migrations/meta/0009_snapshot.json +0 -3447
  92. package/dist/selfhost-migrations/meta/0010_snapshot.json +0 -3586
  93. package/dist/selfhost-migrations/meta/0011_snapshot.json +0 -3600
  94. package/dist/selfhost-migrations/meta/0012_snapshot.json +0 -3607
  95. package/dist/selfhost-migrations/meta/0013_snapshot.json +0 -4697
  96. package/dist/selfhost-migrations/meta/0014_snapshot.json +0 -4704
  97. package/dist/selfhost-migrations/meta/0015_snapshot.json +0 -4697
  98. package/dist/selfhost-migrations/meta/0016_snapshot.json +0 -4703
  99. package/dist/selfhost-migrations/meta/0017_snapshot.json +0 -4769
  100. package/dist/selfhost-migrations/meta/0018_snapshot.json +0 -4821
  101. package/dist/selfhost-migrations/meta/0019_snapshot.json +0 -4840
  102. package/dist/selfhost-migrations/meta/0020_snapshot.json +0 -5602
  103. package/dist/selfhost-migrations/meta/0021_snapshot.json +0 -5729
  104. package/dist/selfhost-migrations/meta/0022_snapshot.json +0 -5792
  105. package/dist/selfhost-migrations/meta/0023_snapshot.json +0 -5799
  106. package/dist/selfhost-migrations/meta/0024_snapshot.json +0 -5821
  107. package/dist/selfhost-migrations/meta/0025_snapshot.json +0 -5831
  108. package/dist/selfhost-migrations/meta/0026_snapshot.json +0 -5844
  109. package/dist/selfhost-migrations/meta/0027_snapshot.json +0 -5864
  110. package/dist/selfhost-migrations/meta/0028_snapshot.json +0 -5871
  111. package/dist/selfhost-migrations/meta/0029_snapshot.json +0 -5984
  112. package/dist/selfhost-migrations/meta/0030_snapshot.json +0 -5990
  113. package/dist/selfhost-migrations/meta/0031_snapshot.json +0 -5950
  114. package/dist/selfhost-migrations/meta/0032_snapshot.json +0 -6042
  115. package/dist/selfhost-migrations/meta/0033_snapshot.json +0 -6057
  116. package/dist/selfhost-migrations/meta/0034_snapshot.json +0 -6130
  117. package/dist/selfhost-migrations/meta/0035_snapshot.json +0 -6195
  118. package/dist/selfhost-migrations/meta/0036_snapshot.json +0 -6201
  119. package/dist/selfhost-migrations/meta/0037_snapshot.json +0 -6265
  120. package/dist/selfhost-migrations/meta/0038_snapshot.json +0 -6271
  121. package/dist/selfhost-migrations/meta/0039_snapshot.json +0 -6278
  122. package/dist/selfhost-migrations/meta/0041_snapshot.json +0 -6284
  123. package/dist/selfhost-migrations/meta/0042_snapshot.json +0 -6297
  124. package/dist/selfhost-migrations/meta/0043_snapshot.json +0 -6297
  125. package/dist/selfhost-migrations/meta/0044_snapshot.json +0 -6297
  126. package/dist/selfhost-migrations/meta/0045_snapshot.json +0 -6303
  127. package/dist/selfhost-migrations/meta/0046_snapshot.json +0 -6315
  128. package/dist/selfhost-migrations/meta/0047_snapshot.json +0 -6330
  129. package/dist/selfhost-migrations/meta/0048_snapshot.json +0 -6336
  130. package/dist/selfhost-migrations/meta/0049_snapshot.json +0 -6366
  131. package/dist/selfhost-migrations/meta/0050_snapshot.json +0 -6390
  132. package/dist/selfhost-migrations/meta/0051_snapshot.json +0 -6403
  133. package/dist/selfhost-migrations/meta/0052_snapshot.json +0 -6470
  134. package/dist/selfhost-migrations/meta/0053_snapshot.json +0 -6470
  135. package/dist/selfhost-migrations/meta/0054_snapshot.json +0 -6646
  136. package/dist/selfhost-migrations/meta/0055_snapshot.json +0 -6713
  137. package/dist/selfhost-migrations/meta/0056_snapshot.json +0 -6713
  138. package/dist/selfhost-migrations/meta/0057_snapshot.json +0 -6731
  139. package/dist/selfhost-migrations/meta/0059_snapshot.json +0 -6764
  140. package/dist/selfhost-migrations/meta/0060_snapshot.json +0 -7125
  141. package/dist/selfhost-migrations/meta/0061_snapshot.json +0 -7131
  142. package/dist/selfhost-migrations/meta/0062_snapshot.json +0 -7143
  143. package/dist/selfhost-migrations/meta/0063_snapshot.json +0 -7282
  144. package/dist/selfhost-migrations/meta/0064_snapshot.json +0 -7626
  145. package/dist/selfhost-migrations/meta/0065_snapshot.json +0 -7662
  146. package/dist/selfhost-migrations/meta/0066_snapshot.json +0 -7682
  147. package/dist/selfhost-migrations/meta/_journal.json +0 -475
@@ -1,124 +0,0 @@
1
- CREATE TYPE "public"."template_status" AS ENUM('DRAFT', 'PUBLISHED', 'ARCHIVED');--> statement-breakpoint
2
- CREATE TYPE "public"."variable_type" AS ENUM('TEXT', 'NUMBER', 'BOOLEAN', 'DATE', 'URL', 'EMAIL');--> statement-breakpoint
3
- CREATE TABLE "ai_conversation" (
4
- "id" text PRIMARY KEY NOT NULL,
5
- "organization_id" text NOT NULL,
6
- "template_id" text,
7
- "messages" jsonb DEFAULT '[]'::jsonb,
8
- "total_tokens" integer DEFAULT 0 NOT NULL,
9
- "created_at" timestamp DEFAULT now() NOT NULL,
10
- "updated_at" timestamp DEFAULT now() NOT NULL,
11
- "created_by" text NOT NULL
12
- );
13
- --> statement-breakpoint
14
- CREATE TABLE "brand_kit" (
15
- "id" text PRIMARY KEY NOT NULL,
16
- "organization_id" text NOT NULL,
17
- "name" text DEFAULT 'Default' NOT NULL,
18
- "logo_url" text,
19
- "primary_color" text DEFAULT '#5046e5' NOT NULL,
20
- "secondary_color" text DEFAULT '#6366f1' NOT NULL,
21
- "background_color" text DEFAULT '#ffffff' NOT NULL,
22
- "text_color" text DEFAULT '#1f2937' NOT NULL,
23
- "font_family" text DEFAULT 'system-ui, sans-serif' NOT NULL,
24
- "heading_font_family" text,
25
- "button_style" text DEFAULT 'rounded' NOT NULL,
26
- "button_radius" text DEFAULT '4px' NOT NULL,
27
- "company_name" text,
28
- "company_address" text,
29
- "social_links" jsonb DEFAULT '[]'::jsonb,
30
- "source_domain" text,
31
- "auto_extracted" boolean DEFAULT false NOT NULL,
32
- "is_default" boolean DEFAULT false NOT NULL,
33
- "created_at" timestamp DEFAULT now() NOT NULL,
34
- "updated_at" timestamp DEFAULT now() NOT NULL
35
- );
36
- --> statement-breakpoint
37
- CREATE TABLE "reusable_block" (
38
- "id" text PRIMARY KEY NOT NULL,
39
- "organization_id" text NOT NULL,
40
- "name" text NOT NULL,
41
- "description" text,
42
- "category" text DEFAULT 'custom' NOT NULL,
43
- "content" jsonb NOT NULL,
44
- "thumbnail" text,
45
- "is_public" boolean DEFAULT false NOT NULL,
46
- "usage_count" integer DEFAULT 0 NOT NULL,
47
- "created_at" timestamp DEFAULT now() NOT NULL,
48
- "updated_at" timestamp DEFAULT now() NOT NULL,
49
- "created_by" text NOT NULL
50
- );
51
- --> statement-breakpoint
52
- CREATE TABLE "template" (
53
- "id" text PRIMARY KEY NOT NULL,
54
- "organization_id" text NOT NULL,
55
- "name" text NOT NULL,
56
- "description" text,
57
- "subject" text,
58
- "content" jsonb NOT NULL,
59
- "compiled_html" text,
60
- "compiled_text" text,
61
- "variables" jsonb DEFAULT '[]'::jsonb,
62
- "test_data" jsonb DEFAULT '{}'::jsonb,
63
- "room_id" text,
64
- "is_collaborative" boolean DEFAULT false NOT NULL,
65
- "ai_generated" boolean DEFAULT false NOT NULL,
66
- "ai_conversation_id" text,
67
- "ses_template_name" text,
68
- "published_at" timestamp,
69
- "status" "template_status" DEFAULT 'DRAFT' NOT NULL,
70
- "created_at" timestamp DEFAULT now() NOT NULL,
71
- "updated_at" timestamp DEFAULT now() NOT NULL,
72
- "created_by" text NOT NULL,
73
- "last_edited_by" text
74
- );
75
- --> statement-breakpoint
76
- CREATE TABLE "template_variable" (
77
- "id" text PRIMARY KEY NOT NULL,
78
- "organization_id" text NOT NULL,
79
- "name" text NOT NULL,
80
- "label" text NOT NULL,
81
- "type" "variable_type" NOT NULL,
82
- "required" boolean DEFAULT false NOT NULL,
83
- "fallback" text,
84
- "validation" jsonb,
85
- "created_at" timestamp DEFAULT now() NOT NULL,
86
- "updated_at" timestamp DEFAULT now() NOT NULL
87
- );
88
- --> statement-breakpoint
89
- CREATE TABLE "template_version" (
90
- "id" text PRIMARY KEY NOT NULL,
91
- "template_id" text NOT NULL,
92
- "content" jsonb NOT NULL,
93
- "version" integer NOT NULL,
94
- "created_at" timestamp DEFAULT now() NOT NULL,
95
- "created_by" text NOT NULL,
96
- "change_note" text
97
- );
98
- --> statement-breakpoint
99
- ALTER TABLE "ai_conversation" ADD CONSTRAINT "ai_conversation_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
100
- ALTER TABLE "ai_conversation" ADD CONSTRAINT "ai_conversation_template_id_template_id_fk" FOREIGN KEY ("template_id") REFERENCES "public"."template"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
101
- ALTER TABLE "ai_conversation" ADD CONSTRAINT "ai_conversation_created_by_user_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
102
- ALTER TABLE "brand_kit" ADD CONSTRAINT "brand_kit_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
103
- ALTER TABLE "reusable_block" ADD CONSTRAINT "reusable_block_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
104
- ALTER TABLE "reusable_block" ADD CONSTRAINT "reusable_block_created_by_user_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
105
- ALTER TABLE "template" ADD CONSTRAINT "template_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
106
- ALTER TABLE "template" ADD CONSTRAINT "template_created_by_user_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
107
- ALTER TABLE "template" ADD CONSTRAINT "template_last_edited_by_user_id_fk" FOREIGN KEY ("last_edited_by") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
108
- ALTER TABLE "template_variable" ADD CONSTRAINT "template_variable_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
109
- ALTER TABLE "template_version" ADD CONSTRAINT "template_version_template_id_template_id_fk" FOREIGN KEY ("template_id") REFERENCES "public"."template"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
110
- ALTER TABLE "template_version" ADD CONSTRAINT "template_version_created_by_user_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
111
- CREATE INDEX "ai_conversation_org_idx" ON "ai_conversation" USING btree ("organization_id");--> statement-breakpoint
112
- CREATE INDEX "ai_conversation_template_idx" ON "ai_conversation" USING btree ("template_id");--> statement-breakpoint
113
- CREATE INDEX "brand_kit_org_idx" ON "brand_kit" USING btree ("organization_id");--> statement-breakpoint
114
- CREATE INDEX "brand_kit_default_idx" ON "brand_kit" USING btree ("organization_id","is_default");--> statement-breakpoint
115
- CREATE INDEX "reusable_block_org_idx" ON "reusable_block" USING btree ("organization_id");--> statement-breakpoint
116
- CREATE INDEX "reusable_block_created_by_category_idx" ON "reusable_block" USING btree ("created_by","category");--> statement-breakpoint
117
- CREATE INDEX "reusable_block_public_category_idx" ON "reusable_block" USING btree ("is_public","category");--> statement-breakpoint
118
- CREATE INDEX "template_org_idx" ON "template" USING btree ("organization_id");--> statement-breakpoint
119
- CREATE INDEX "template_status_updated_at_idx" ON "template" USING btree ("status","updated_at");--> statement-breakpoint
120
- CREATE INDEX "template_created_by_idx" ON "template" USING btree ("created_by");--> statement-breakpoint
121
- CREATE UNIQUE INDEX "template_room_id_idx" ON "template" USING btree ("room_id");--> statement-breakpoint
122
- CREATE UNIQUE INDEX "template_variable_org_name_idx" ON "template_variable" USING btree ("organization_id","name");--> statement-breakpoint
123
- CREATE UNIQUE INDEX "template_version_template_version_idx" ON "template_version" USING btree ("template_id","version");--> statement-breakpoint
124
- CREATE INDEX "template_version_template_created_at_idx" ON "template_version" USING btree ("template_id","created_at");
@@ -1,33 +0,0 @@
1
- CREATE TABLE "ai_usage_log" (
2
- "id" text PRIMARY KEY NOT NULL,
3
- "organization_id" text NOT NULL,
4
- "user_id" text,
5
- "period_key" text NOT NULL,
6
- "feature_type" text DEFAULT 'ai_chat' NOT NULL,
7
- "template_id" text,
8
- "input_tokens" integer,
9
- "output_tokens" integer,
10
- "total_tokens" integer,
11
- "model" text,
12
- "duration_ms" integer,
13
- "created_at" timestamp DEFAULT now() NOT NULL
14
- );
15
- --> statement-breakpoint
16
- CREATE TABLE "ai_usage_monthly" (
17
- "id" text PRIMARY KEY NOT NULL,
18
- "organization_id" text NOT NULL,
19
- "period_key" text NOT NULL,
20
- "message_count" integer DEFAULT 0 NOT NULL,
21
- "updated_at" timestamp DEFAULT now() NOT NULL
22
- );
23
- --> statement-breakpoint
24
- ALTER TABLE "ai_usage_log" ADD CONSTRAINT "ai_usage_log_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
25
- ALTER TABLE "ai_usage_log" ADD CONSTRAINT "ai_usage_log_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
26
- ALTER TABLE "ai_usage_monthly" ADD CONSTRAINT "ai_usage_monthly_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
27
- CREATE INDEX "ai_usage_log_org_idx" ON "ai_usage_log" USING btree ("organization_id");--> statement-breakpoint
28
- CREATE INDEX "ai_usage_log_period_idx" ON "ai_usage_log" USING btree ("period_key");--> statement-breakpoint
29
- CREATE INDEX "ai_usage_log_org_period_idx" ON "ai_usage_log" USING btree ("organization_id","period_key");--> statement-breakpoint
30
- CREATE INDEX "ai_usage_log_user_idx" ON "ai_usage_log" USING btree ("user_id");--> statement-breakpoint
31
- CREATE INDEX "ai_usage_log_created_idx" ON "ai_usage_log" USING btree ("created_at");--> statement-breakpoint
32
- CREATE UNIQUE INDEX "ai_usage_monthly_org_period_idx" ON "ai_usage_monthly" USING btree ("organization_id","period_key");--> statement-breakpoint
33
- CREATE INDEX "ai_usage_monthly_period_idx" ON "ai_usage_monthly" USING btree ("period_key");
@@ -1,73 +0,0 @@
1
- CREATE TABLE "contact" (
2
- "id" text PRIMARY KEY NOT NULL,
3
- "organization_id" text NOT NULL,
4
- "email" text NOT NULL,
5
- "email_hash" text NOT NULL,
6
- "status" text DEFAULT 'active' NOT NULL,
7
- "properties" json DEFAULT '{}'::json NOT NULL,
8
- "last_activity_at" timestamp,
9
- "last_email_sent_at" timestamp,
10
- "last_email_opened_at" timestamp,
11
- "last_email_clicked_at" timestamp,
12
- "emails_sent" integer DEFAULT 0 NOT NULL,
13
- "emails_opened" integer DEFAULT 0 NOT NULL,
14
- "emails_clicked" integer DEFAULT 0 NOT NULL,
15
- "created_at" timestamp DEFAULT now() NOT NULL,
16
- "updated_at" timestamp DEFAULT now() NOT NULL,
17
- "confirmed_at" timestamp,
18
- "unsubscribed_at" timestamp,
19
- "bounced_at" timestamp,
20
- "complained_at" timestamp,
21
- "created_by" text
22
- );
23
- --> statement-breakpoint
24
- CREATE TABLE "contact_topic" (
25
- "contact_id" text NOT NULL,
26
- "topic_id" text NOT NULL,
27
- "status" text DEFAULT 'subscribed' NOT NULL,
28
- "subscribed_at" timestamp DEFAULT now(),
29
- "unsubscribed_at" timestamp,
30
- CONSTRAINT "contact_topic_contact_id_topic_id_pk" PRIMARY KEY("contact_id","topic_id")
31
- );
32
- --> statement-breakpoint
33
- CREATE TABLE "topic" (
34
- "id" text PRIMARY KEY NOT NULL,
35
- "organization_id" text NOT NULL,
36
- "name" text NOT NULL,
37
- "slug" text NOT NULL,
38
- "description" text,
39
- "public" boolean DEFAULT true NOT NULL,
40
- "double_opt_in" boolean DEFAULT false NOT NULL,
41
- "subscriber_count" integer DEFAULT 0 NOT NULL,
42
- "created_at" timestamp DEFAULT now() NOT NULL,
43
- "updated_at" timestamp DEFAULT now() NOT NULL,
44
- "created_by" text
45
- );
46
- --> statement-breakpoint
47
- CREATE TABLE "waitlist" (
48
- "id" text PRIMARY KEY NOT NULL,
49
- "email" text NOT NULL,
50
- "email_hash" text NOT NULL,
51
- "product" text NOT NULL,
52
- "source" text,
53
- "referrer" text,
54
- "created_at" timestamp DEFAULT now() NOT NULL
55
- );
56
- --> statement-breakpoint
57
- ALTER TABLE "contact" ADD CONSTRAINT "contact_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
58
- ALTER TABLE "contact" ADD CONSTRAINT "contact_created_by_user_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
59
- ALTER TABLE "contact_topic" ADD CONSTRAINT "contact_topic_contact_id_contact_id_fk" FOREIGN KEY ("contact_id") REFERENCES "public"."contact"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
60
- ALTER TABLE "contact_topic" ADD CONSTRAINT "contact_topic_topic_id_topic_id_fk" FOREIGN KEY ("topic_id") REFERENCES "public"."topic"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
61
- ALTER TABLE "topic" ADD CONSTRAINT "topic_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
62
- ALTER TABLE "topic" ADD CONSTRAINT "topic_created_by_user_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
63
- CREATE INDEX "contact_org_idx" ON "contact" USING btree ("organization_id");--> statement-breakpoint
64
- CREATE INDEX "contact_email_idx" ON "contact" USING btree ("email");--> statement-breakpoint
65
- CREATE UNIQUE INDEX "contact_unique_org_email_idx" ON "contact" USING btree ("organization_id","email_hash");--> statement-breakpoint
66
- CREATE INDEX "contact_status_idx" ON "contact" USING btree ("organization_id","status");--> statement-breakpoint
67
- CREATE INDEX "contact_topic_topic_idx" ON "contact_topic" USING btree ("topic_id");--> statement-breakpoint
68
- CREATE INDEX "contact_topic_status_idx" ON "contact_topic" USING btree ("topic_id","status");--> statement-breakpoint
69
- CREATE INDEX "topic_org_idx" ON "topic" USING btree ("organization_id");--> statement-breakpoint
70
- CREATE UNIQUE INDEX "topic_unique_org_slug_idx" ON "topic" USING btree ("organization_id","slug");--> statement-breakpoint
71
- CREATE UNIQUE INDEX "waitlist_email_product_idx" ON "waitlist" USING btree ("email_hash","product");--> statement-breakpoint
72
- CREATE INDEX "waitlist_product_idx" ON "waitlist" USING btree ("product");--> statement-breakpoint
73
- CREATE INDEX "waitlist_created_at_idx" ON "waitlist" USING btree ("created_at");
@@ -1,18 +0,0 @@
1
- CREATE TABLE "segment" (
2
- "id" text PRIMARY KEY NOT NULL,
3
- "organization_id" text NOT NULL,
4
- "name" text NOT NULL,
5
- "description" text,
6
- "condition" json NOT NULL,
7
- "track_membership" boolean DEFAULT false NOT NULL,
8
- "member_count" integer DEFAULT 0 NOT NULL,
9
- "last_computed_at" timestamp,
10
- "created_by" text,
11
- "created_at" timestamp DEFAULT now() NOT NULL,
12
- "updated_at" timestamp DEFAULT now() NOT NULL
13
- );
14
- --> statement-breakpoint
15
- ALTER TABLE "segment" ADD CONSTRAINT "segment_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
16
- ALTER TABLE "segment" ADD CONSTRAINT "segment_created_by_user_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
17
- CREATE INDEX "segment_org_idx" ON "segment" USING btree ("organization_id");--> statement-breakpoint
18
- CREATE INDEX "segment_name_idx" ON "segment" USING btree ("organization_id","name");
@@ -1,2 +0,0 @@
1
- ALTER TABLE "aws_account" ADD COLUMN "sms_enabled" boolean DEFAULT false NOT NULL;--> statement-breakpoint
2
- ALTER TABLE "aws_account" ADD COLUMN "sms_phone_number_count" integer DEFAULT 0 NOT NULL;
@@ -1 +0,0 @@
1
- ALTER TABLE "aws_account" ADD COLUMN "sms_event_history_enabled" boolean DEFAULT false NOT NULL;
@@ -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;