hellth-hub/packages/db/drizzle/0002_silent_puppet_master.sql

70 lines
2.8 KiB
MySQL
Raw Permalink Normal View History

CREATE TYPE "public"."tenant_user_status" AS ENUM('invited', 'active', 'suspended');--> statement-breakpoint
CREATE TABLE "member_user_links" (
"id" text PRIMARY KEY NOT NULL,
"tenantId" text NOT NULL,
"memberId" text NOT NULL,
"userId" text NOT NULL,
"createdAt" timestamp DEFAULT now() NOT NULL,
"updatedAt" timestamp DEFAULT now() NOT NULL
);
--> statement-breakpoint
CREATE TABLE "tenant_users" (
"id" text PRIMARY KEY NOT NULL,
"tenantId" text NOT NULL,
"userId" text NOT NULL,
"status" "tenant_user_status" DEFAULT 'invited' NOT NULL,
"invitedAt" timestamp DEFAULT now() NOT NULL,
"activatedAt" timestamp,
"suspendedAt" timestamp,
"createdAt" timestamp DEFAULT now() NOT NULL,
"updatedAt" timestamp DEFAULT now() NOT NULL
);
--> statement-breakpoint
ALTER TABLE "member_user_links" ADD CONSTRAINT "member_user_links_tenantId_tenants_id_fk" FOREIGN KEY ("tenantId") REFERENCES "public"."tenants"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "member_user_links" ADD CONSTRAINT "member_user_links_memberId_members_id_fk" FOREIGN KEY ("memberId") REFERENCES "public"."members"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "member_user_links" ADD CONSTRAINT "member_user_links_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "tenant_users" ADD CONSTRAINT "tenant_users_tenantId_tenants_id_fk" FOREIGN KEY ("tenantId") REFERENCES "public"."tenants"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "tenant_users" ADD CONSTRAINT "tenant_users_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
CREATE UNIQUE INDEX "member_user_links_tenant_member_unique" ON "member_user_links" USING btree ("tenantId","memberId");--> statement-breakpoint
CREATE UNIQUE INDEX "member_user_links_tenant_user_unique" ON "member_user_links" USING btree ("tenantId","userId");--> statement-breakpoint
CREATE UNIQUE INDEX "tenant_users_tenant_user_unique" ON "tenant_users" USING btree ("tenantId","userId");--> statement-breakpoint
INSERT INTO "tenant_users" (
"id",
"tenantId",
"userId",
"status",
"activatedAt",
"createdAt",
"updatedAt"
)
SELECT
concat('tu_', md5(tm."tenantId" || ':' || tm."userId")),
tm."tenantId",
tm."userId",
'active'::"tenant_user_status",
now(),
tm."createdAt",
now()
FROM "tenant_members" tm
ON CONFLICT ("tenantId","userId") DO NOTHING;--> statement-breakpoint
INSERT INTO "member_user_links" (
"id",
"tenantId",
"memberId",
"userId",
"createdAt",
"updatedAt"
)
SELECT
concat('mul_', md5(m."tenantId" || ':' || m."id")),
m."tenantId",
m."id",
m."userId",
m."createdAt",
now()
FROM "members" m
WHERE m."userId" IS NOT NULL
ON CONFLICT ("tenantId","memberId") DO NOTHING;