Skip to content

Commit fca8b0e

Browse files
committed
Add lifecycle email system with org preferences
1 parent c919f50 commit fca8b0e

38 files changed

Lines changed: 10229 additions & 21 deletions
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
ALTER TABLE "organization" ADD COLUMN "timezone" varchar(100) DEFAULT 'UTC' NOT NULL;
2+
--> statement-breakpoint
3+
ALTER TABLE "organization" ADD COLUMN "weekly_digest_enabled" boolean DEFAULT true NOT NULL;
4+
--> statement-breakpoint
5+
CREATE TABLE "lifecycle_email_event" (
6+
"id" varchar(26) PRIMARY KEY NOT NULL,
7+
"dedupe_key" varchar(255) NOT NULL,
8+
"email_key" varchar(100) NOT NULL,
9+
"status" varchar(30) DEFAULT 'scheduled' NOT NULL,
10+
"recipient_user_id" varchar(26),
11+
"recipient_member_id" varchar(26),
12+
"recipient_email" varchar(255) NOT NULL,
13+
"organization_id" varchar(26) NOT NULL,
14+
"website_id" varchar(26),
15+
"scheduled_at" timestamp NOT NULL,
16+
"claimed_at" timestamp,
17+
"sent_at" timestamp,
18+
"failed_at" timestamp,
19+
"attempt_count" integer DEFAULT 0 NOT NULL,
20+
"last_error" text,
21+
"metadata" jsonb,
22+
"created_at" timestamp DEFAULT now() NOT NULL,
23+
"updated_at" timestamp DEFAULT now() NOT NULL
24+
);
25+
--> statement-breakpoint
26+
ALTER TABLE "lifecycle_email_event" ADD CONSTRAINT "lifecycle_email_event_recipient_user_id_user_id_fk" FOREIGN KEY ("recipient_user_id") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;
27+
--> statement-breakpoint
28+
ALTER TABLE "lifecycle_email_event" ADD CONSTRAINT "lifecycle_email_event_recipient_member_id_member_id_fk" FOREIGN KEY ("recipient_member_id") REFERENCES "public"."member"("id") ON DELETE set null ON UPDATE no action;
29+
--> statement-breakpoint
30+
ALTER TABLE "lifecycle_email_event" ADD CONSTRAINT "lifecycle_email_event_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;
31+
--> statement-breakpoint
32+
ALTER TABLE "lifecycle_email_event" ADD CONSTRAINT "lifecycle_email_event_website_id_website_id_fk" FOREIGN KEY ("website_id") REFERENCES "public"."website"("id") ON DELETE set null ON UPDATE no action;
33+
--> statement-breakpoint
34+
CREATE UNIQUE INDEX "lifecycle_email_event_dedupe_key_idx" ON "lifecycle_email_event" USING btree ("dedupe_key");
35+
--> statement-breakpoint
36+
CREATE INDEX "lifecycle_email_event_status_scheduled_idx" ON "lifecycle_email_event" USING btree ("status","scheduled_at");
37+
--> statement-breakpoint
38+
CREATE INDEX "lifecycle_email_event_org_idx" ON "lifecycle_email_event" USING btree ("organization_id");
39+
--> statement-breakpoint
40+
CREATE INDEX "lifecycle_email_event_website_idx" ON "lifecycle_email_event" USING btree ("website_id");
41+
--> statement-breakpoint
42+
CREATE INDEX "lifecycle_email_event_recipient_user_idx" ON "lifecycle_email_event" USING btree ("recipient_user_id");
43+
--> statement-breakpoint
44+
CREATE INDEX "lifecycle_email_event_email_key_idx" ON "lifecycle_email_event" USING btree ("email_key");

0 commit comments

Comments
 (0)