From db221e5cc4ef0d51adbdc3a74b1bd9177b610c0c Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 13 Jul 2025 00:20:41 -0600 Subject: [PATCH] feat(database): update member roles and enforce roleId constraints - Added a script to update existing members with corresponding roles based on their current role type. - Set the "roleId" column in the "member" table to NOT NULL to ensure data integrity. - Enhanced foreign key constraints for better relationship management within the database. --- .../drizzle/0103_swift_christian_walker.sql | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/apps/dokploy/drizzle/0103_swift_christian_walker.sql b/apps/dokploy/drizzle/0103_swift_christian_walker.sql index ecf4a8e5c..e45b99807 100644 --- a/apps/dokploy/drizzle/0103_swift_christian_walker.sql +++ b/apps/dokploy/drizzle/0103_swift_christian_walker.sql @@ -98,6 +98,22 @@ ALTER TABLE "apikey" ADD CONSTRAINT "apikey_user_id_users_id_fk" FOREIGN KEY ("u ALTER TABLE "invitation" ADD CONSTRAINT "invitation_inviter_id_users_id_fk" FOREIGN KEY ("inviter_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "member" ADD CONSTRAINT "member_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "member" ADD CONSTRAINT "member_roleId_member_role_roleId_fk" FOREIGN KEY ("roleId") REFERENCES "public"."member_role"("roleId") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint + +-- Update existing members with corresponding roles based on their current role type +DO $$ +DECLARE + mem RECORD; +BEGIN + FOR mem IN SELECT m.id, m.organization_id, m.role as role_type FROM "member" m + LOOP + UPDATE "member" + SET "roleId" = mem.organization_id || '_' || mem.role_type + WHERE id = mem.id; + END LOOP; +END $$; +ALTER TABLE "member" ALTER COLUMN "roleId" SET NOT NULL; + + ALTER TABLE "organization" ADD CONSTRAINT "organization_owner_id_users_id_fk" FOREIGN KEY ("owner_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "two_factor" ADD CONSTRAINT "two_factor_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "schedule" ADD CONSTRAINT "schedule_userId_users_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint