CREATE TYPE "public"."card_activity_type" AS ENUM('card.created', 'card.updated.title', 'card.updated.description', 'card.updated.index', 'card.updated.list', 'card.updated.label.added', 'card.updated.label.removed', 'card.updated.member.added', 'card.updated.member.removed', 'card.updated.comment.added', 'card.updated.comment.updated', 'card.updated.comment.deleted', 'card.archived');--> statement-breakpoint CREATE TYPE "public"."source" AS ENUM('trello');--> statement-breakpoint CREATE TYPE "public"."status" AS ENUM('started', 'success', 'failed');--> statement-breakpoint CREATE TYPE "public"."role" AS ENUM('admin', 'member', 'guest');--> statement-breakpoint CREATE TYPE "public"."member_status" AS ENUM('invited', 'active', 'removed');--> statement-breakpoint CREATE TYPE "public"."slug_type" AS ENUM('reserved', 'premium');--> statement-breakpoint CREATE TABLE IF NOT EXISTS "board" ( "id" bigserial PRIMARY KEY NOT NULL, "publicId" varchar(12) NOT NULL, "name" varchar(255) NOT NULL, "createdBy" uuid NOT NULL, "createdAt" timestamp DEFAULT now() NOT NULL, "updatedAt" timestamp, "deletedAt" timestamp, "deletedBy" uuid, "importId" bigint, "workspaceId" bigint NOT NULL, CONSTRAINT "board_publicId_unique" UNIQUE("publicId") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "card_activity" ( "id" bigserial PRIMARY KEY NOT NULL, "publicId" varchar(12) NOT NULL, "type" "card_activity_type" NOT NULL, "cardId" bigint NOT NULL, "fromIndex" integer, "toIndex" integer, "fromListId" bigint, "toListId" bigint, "labelId" bigint, "workspaceMemberId" bigint, "fromTitle" varchar(255), "toTitle" varchar(255), "fromDescription" text, "toDescription" text, "createdBy" uuid NOT NULL, "createdAt" timestamp DEFAULT now() NOT NULL, "commentId" bigint, "fromComment" text, "toComment" text, CONSTRAINT "card_activity_publicId_unique" UNIQUE("publicId") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "_card_workspace_members" ( "cardId" bigint NOT NULL, "workspaceMemberId" bigint NOT NULL, CONSTRAINT "_card_workspace_members_cardId_workspaceMemberId_pk" PRIMARY KEY("cardId","workspaceMemberId") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "card" ( "id" bigserial PRIMARY KEY NOT NULL, "publicId" varchar(12) NOT NULL, "title" varchar(255) NOT NULL, "description" text, "index" integer NOT NULL, "createdBy" uuid NOT NULL, "createdAt" timestamp DEFAULT now() NOT NULL, "updatedAt" timestamp, "deletedAt" timestamp, "deletedBy" uuid, "listId" bigint NOT NULL, "importId" bigint, CONSTRAINT "card_publicId_unique" UNIQUE("publicId") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "_card_labels" ( "cardId" bigint NOT NULL, "labelId" bigint NOT NULL, CONSTRAINT "_card_labels_cardId_labelId_pk" PRIMARY KEY("cardId","labelId") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "card_comments" ( "id" bigserial PRIMARY KEY NOT NULL, "publicId" varchar(12) NOT NULL, "comment" text NOT NULL, "cardId" bigint NOT NULL, "createdBy" uuid NOT NULL, "createdAt" timestamp DEFAULT now() NOT NULL, "updatedAt" timestamp, "deletedAt" timestamp, "deletedBy" uuid, CONSTRAINT "card_comments_publicId_unique" UNIQUE("publicId") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "import" ( "id" bigserial PRIMARY KEY NOT NULL, "publicId" varchar(12) NOT NULL, "source" "source" NOT NULL, "status" "status" NOT NULL, "createdBy" uuid NOT NULL, "createdAt" timestamp DEFAULT now() NOT NULL, CONSTRAINT "import_publicId_unique" UNIQUE("publicId") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "label" ( "id" bigserial PRIMARY KEY NOT NULL, "publicId" varchar(12) NOT NULL, "name" varchar(255) NOT NULL, "colourCode" varchar(12), "createdBy" uuid NOT NULL, "createdAt" timestamp DEFAULT now() NOT NULL, "updatedAt" timestamp, "boardId" bigint NOT NULL, "importId" bigint, CONSTRAINT "label_publicId_unique" UNIQUE("publicId") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "list" ( "id" bigserial PRIMARY KEY NOT NULL, "publicId" varchar(12) NOT NULL, "name" varchar(255) NOT NULL, "index" integer NOT NULL, "createdBy" uuid NOT NULL, "createdAt" timestamp DEFAULT now() NOT NULL, "updatedAt" timestamp, "deletedAt" timestamp, "deletedBy" uuid, "boardId" bigint NOT NULL, "importId" bigint, CONSTRAINT "list_publicId_unique" UNIQUE("publicId") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "workspace_slugs" ( "slug" varchar(255) NOT NULL, "type" "slug_type" NOT NULL, CONSTRAINT "workspace_slugs_slug_unique" UNIQUE("slug") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "user" ( "id" uuid PRIMARY KEY NOT NULL, "name" varchar(255), "email" varchar(255) NOT NULL, "emailVerified" timestamp, "image" varchar(255), CONSTRAINT "user_email_unique" UNIQUE("email") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "workspace_members" ( "id" bigserial PRIMARY KEY NOT NULL, "publicId" varchar(12) NOT NULL, "userId" uuid NOT NULL, "workspaceId" bigint NOT NULL, "createdBy" uuid NOT NULL, "createdAt" timestamp DEFAULT now() NOT NULL, "updatedAt" timestamp, "deletedAt" timestamp, "deletedBy" uuid, "role" "role" NOT NULL, "status" "member_status" DEFAULT 'invited' NOT NULL, CONSTRAINT "workspace_members_publicId_unique" UNIQUE("publicId") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "workspace" ( "id" bigserial PRIMARY KEY NOT NULL, "publicId" varchar(12) NOT NULL, "name" varchar(255) NOT NULL, "slug" varchar(255) NOT NULL, "createdBy" uuid NOT NULL, "createdAt" timestamp DEFAULT now() NOT NULL, "updatedAt" timestamp, "deletedAt" timestamp, "deletedBy" uuid, CONSTRAINT "workspace_publicId_unique" UNIQUE("publicId"), CONSTRAINT "workspace_slug_unique" UNIQUE("slug") ); --> statement-breakpoint DO $$ BEGIN ALTER TABLE "board" ADD CONSTRAINT "board_createdBy_user_id_fk" FOREIGN KEY ("createdBy") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "board" ADD CONSTRAINT "board_deletedBy_user_id_fk" FOREIGN KEY ("deletedBy") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "board" ADD CONSTRAINT "board_importId_import_id_fk" FOREIGN KEY ("importId") REFERENCES "public"."import"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "board" ADD CONSTRAINT "board_workspaceId_workspace_id_fk" FOREIGN KEY ("workspaceId") REFERENCES "public"."workspace"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "card_activity" ADD CONSTRAINT "card_activity_cardId_card_id_fk" FOREIGN KEY ("cardId") REFERENCES "public"."card"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "card_activity" ADD CONSTRAINT "card_activity_fromListId_list_id_fk" FOREIGN KEY ("fromListId") REFERENCES "public"."list"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "card_activity" ADD CONSTRAINT "card_activity_toListId_list_id_fk" FOREIGN KEY ("toListId") REFERENCES "public"."list"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "card_activity" ADD CONSTRAINT "card_activity_labelId_label_id_fk" FOREIGN KEY ("labelId") REFERENCES "public"."label"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "card_activity" ADD CONSTRAINT "card_activity_workspaceMemberId_workspace_members_id_fk" FOREIGN KEY ("workspaceMemberId") REFERENCES "public"."workspace_members"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "card_activity" ADD CONSTRAINT "card_activity_createdBy_user_id_fk" FOREIGN KEY ("createdBy") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "card_activity" ADD CONSTRAINT "card_activity_commentId_card_comments_id_fk" FOREIGN KEY ("commentId") REFERENCES "public"."card_comments"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "_card_workspace_members" ADD CONSTRAINT "_card_workspace_members_cardId_card_id_fk" FOREIGN KEY ("cardId") REFERENCES "public"."card"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "_card_workspace_members" ADD CONSTRAINT "_card_workspace_members_workspaceMemberId_workspace_members_id_fk" FOREIGN KEY ("workspaceMemberId") REFERENCES "public"."workspace_members"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "card" ADD CONSTRAINT "card_createdBy_user_id_fk" FOREIGN KEY ("createdBy") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "card" ADD CONSTRAINT "card_deletedBy_user_id_fk" FOREIGN KEY ("deletedBy") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "card" ADD CONSTRAINT "card_listId_list_id_fk" FOREIGN KEY ("listId") REFERENCES "public"."list"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "card" ADD CONSTRAINT "card_importId_import_id_fk" FOREIGN KEY ("importId") REFERENCES "public"."import"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "_card_labels" ADD CONSTRAINT "_card_labels_cardId_card_id_fk" FOREIGN KEY ("cardId") REFERENCES "public"."card"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "_card_labels" ADD CONSTRAINT "_card_labels_labelId_label_id_fk" FOREIGN KEY ("labelId") REFERENCES "public"."label"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "card_comments" ADD CONSTRAINT "card_comments_cardId_card_id_fk" FOREIGN KEY ("cardId") REFERENCES "public"."card"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "card_comments" ADD CONSTRAINT "card_comments_createdBy_user_id_fk" FOREIGN KEY ("createdBy") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "card_comments" ADD CONSTRAINT "card_comments_deletedBy_user_id_fk" FOREIGN KEY ("deletedBy") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "import" ADD CONSTRAINT "import_createdBy_user_id_fk" FOREIGN KEY ("createdBy") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "label" ADD CONSTRAINT "label_createdBy_user_id_fk" FOREIGN KEY ("createdBy") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "label" ADD CONSTRAINT "label_boardId_board_id_fk" FOREIGN KEY ("boardId") REFERENCES "public"."board"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "label" ADD CONSTRAINT "label_importId_import_id_fk" FOREIGN KEY ("importId") REFERENCES "public"."import"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "list" ADD CONSTRAINT "list_createdBy_user_id_fk" FOREIGN KEY ("createdBy") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "list" ADD CONSTRAINT "list_deletedBy_user_id_fk" FOREIGN KEY ("deletedBy") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "list" ADD CONSTRAINT "list_boardId_board_id_fk" FOREIGN KEY ("boardId") REFERENCES "public"."board"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "list" ADD CONSTRAINT "list_importId_import_id_fk" FOREIGN KEY ("importId") REFERENCES "public"."import"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "workspace_members" ADD CONSTRAINT "workspace_members_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "workspace_members" ADD CONSTRAINT "workspace_members_workspaceId_workspace_id_fk" FOREIGN KEY ("workspaceId") REFERENCES "public"."workspace"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "workspace_members" ADD CONSTRAINT "workspace_members_deletedBy_user_id_fk" FOREIGN KEY ("deletedBy") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "workspace" ADD CONSTRAINT "workspace_createdBy_user_id_fk" FOREIGN KEY ("createdBy") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "workspace" ADD CONSTRAINT "workspace_deletedBy_user_id_fk" FOREIGN KEY ("deletedBy") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$;