feat: setup checklist schema

This commit is contained in:
Henry
2025-07-15 13:42:34 +01:00
parent e53ec868a5
commit 31aa2ac7c0
7 changed files with 2703 additions and 320 deletions

View File

@@ -0,0 +1,84 @@
CREATE TABLE IF NOT EXISTS "card_checklist_item" (
"id" bigserial PRIMARY KEY NOT NULL,
"publicId" varchar(12) NOT NULL,
"title" varchar(500) NOT NULL,
"completed" boolean DEFAULT false NOT NULL,
"index" integer NOT NULL,
"checklistId" bigint NOT NULL,
"createdBy" uuid,
"createdAt" timestamp DEFAULT now() NOT NULL,
"updatedAt" timestamp,
"deletedAt" timestamp,
"deletedBy" uuid,
CONSTRAINT "card_checklist_item_publicId_unique" UNIQUE("publicId")
);
--> statement-breakpoint
ALTER TABLE "card_checklist_item" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
CREATE TABLE IF NOT EXISTS "card_checklist" (
"id" bigserial PRIMARY KEY NOT NULL,
"publicId" varchar(12) NOT NULL,
"title" varchar(255) NOT NULL,
"index" integer NOT NULL,
"cardId" bigint NOT NULL,
"createdBy" uuid,
"createdAt" timestamp DEFAULT now() NOT NULL,
"updatedAt" timestamp,
"deletedAt" timestamp,
"deletedBy" uuid,
CONSTRAINT "card_checklist_publicId_unique" UNIQUE("publicId")
);
--> statement-breakpoint
ALTER TABLE "card_checklist" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
CREATE TABLE IF NOT EXISTS "integration" (
"provider" varchar(255) NOT NULL,
"userId" uuid NOT NULL,
"accessToken" varchar(255) NOT NULL,
"refreshToken" varchar(255),
"expiresAt" timestamp NOT NULL,
"createdAt" timestamp NOT NULL,
"updatedAt" timestamp,
CONSTRAINT "integration_pkey" PRIMARY KEY("userId","provider")
);
--> statement-breakpoint
ALTER TABLE "integration" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "card_checklist_item" ADD CONSTRAINT "card_checklist_item_checklistId_card_checklist_id_fk" FOREIGN KEY ("checklistId") REFERENCES "public"."card_checklist"("id") ON DELETE cascade ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "card_checklist_item" ADD CONSTRAINT "card_checklist_item_createdBy_user_id_fk" FOREIGN KEY ("createdBy") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "card_checklist_item" ADD CONSTRAINT "card_checklist_item_deletedBy_user_id_fk" FOREIGN KEY ("deletedBy") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "card_checklist" ADD CONSTRAINT "card_checklist_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_checklist" ADD CONSTRAINT "card_checklist_createdBy_user_id_fk" FOREIGN KEY ("createdBy") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "card_checklist" ADD CONSTRAINT "card_checklist_deletedBy_user_id_fk" FOREIGN KEY ("deletedBy") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "integration" ADD CONSTRAINT "integration_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;

View File

@@ -1,6 +1,6 @@
{
"id": "91f9a2fa-31e2-4f3a-bdb9-852292fd7501",
"prevId": "058e8521-2814-46f0-a33f-1bbd86f450ce",
"prevId": "d170c8e0-bf75-4c71-abd9-0ecbeeb14003",
"version": "7",
"dialect": "postgresql",
"tables": {
@@ -92,13 +92,9 @@
"account_userId_user_id_fk": {
"name": "account_userId_user_id_fk",
"tableFrom": "account",
"columnsFrom": [
"userId"
],
"columnsFrom": ["userId"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
}
@@ -245,13 +241,9 @@
"apiKey_userId_user_id_fk": {
"name": "apiKey_userId_user_id_fk",
"tableFrom": "apiKey",
"columnsFrom": [
"userId"
],
"columnsFrom": ["userId"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
}
@@ -320,13 +312,9 @@
"session_userId_user_id_fk": {
"name": "session_userId_user_id_fk",
"tableFrom": "session",
"columnsFrom": [
"userId"
],
"columnsFrom": ["userId"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
}
@@ -335,9 +323,7 @@
"uniqueConstraints": {
"session_token_unique": {
"name": "session_token_unique",
"columns": [
"token"
],
"columns": ["token"],
"nullsNotDistinct": false
}
},
@@ -523,52 +509,36 @@
"board_createdBy_user_id_fk": {
"name": "board_createdBy_user_id_fk",
"tableFrom": "board",
"columnsFrom": [
"createdBy"
],
"columnsFrom": ["createdBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
},
"board_deletedBy_user_id_fk": {
"name": "board_deletedBy_user_id_fk",
"tableFrom": "board",
"columnsFrom": [
"deletedBy"
],
"columnsFrom": ["deletedBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
},
"board_importId_import_id_fk": {
"name": "board_importId_import_id_fk",
"tableFrom": "board",
"columnsFrom": [
"importId"
],
"columnsFrom": ["importId"],
"tableTo": "import",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "no action"
},
"board_workspaceId_workspace_id_fk": {
"name": "board_workspaceId_workspace_id_fk",
"tableFrom": "board",
"columnsFrom": [
"workspaceId"
],
"columnsFrom": ["workspaceId"],
"tableTo": "workspace",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
}
@@ -577,9 +547,7 @@
"uniqueConstraints": {
"board_publicId_unique": {
"name": "board_publicId_unique",
"columns": [
"publicId"
],
"columns": ["publicId"],
"nullsNotDistinct": false
}
},
@@ -713,91 +681,63 @@
"card_activity_cardId_card_id_fk": {
"name": "card_activity_cardId_card_id_fk",
"tableFrom": "card_activity",
"columnsFrom": [
"cardId"
],
"columnsFrom": ["cardId"],
"tableTo": "card",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
},
"card_activity_fromListId_list_id_fk": {
"name": "card_activity_fromListId_list_id_fk",
"tableFrom": "card_activity",
"columnsFrom": [
"fromListId"
],
"columnsFrom": ["fromListId"],
"tableTo": "list",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
},
"card_activity_toListId_list_id_fk": {
"name": "card_activity_toListId_list_id_fk",
"tableFrom": "card_activity",
"columnsFrom": [
"toListId"
],
"columnsFrom": ["toListId"],
"tableTo": "list",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
},
"card_activity_labelId_label_id_fk": {
"name": "card_activity_labelId_label_id_fk",
"tableFrom": "card_activity",
"columnsFrom": [
"labelId"
],
"columnsFrom": ["labelId"],
"tableTo": "label",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
},
"card_activity_workspaceMemberId_workspace_members_id_fk": {
"name": "card_activity_workspaceMemberId_workspace_members_id_fk",
"tableFrom": "card_activity",
"columnsFrom": [
"workspaceMemberId"
],
"columnsFrom": ["workspaceMemberId"],
"tableTo": "workspace_members",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
},
"card_activity_createdBy_user_id_fk": {
"name": "card_activity_createdBy_user_id_fk",
"tableFrom": "card_activity",
"columnsFrom": [
"createdBy"
],
"columnsFrom": ["createdBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
},
"card_activity_commentId_card_comments_id_fk": {
"name": "card_activity_commentId_card_comments_id_fk",
"tableFrom": "card_activity",
"columnsFrom": [
"commentId"
],
"columnsFrom": ["commentId"],
"tableTo": "card_comments",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
}
@@ -806,9 +746,7 @@
"uniqueConstraints": {
"card_activity_publicId_unique": {
"name": "card_activity_publicId_unique",
"columns": [
"publicId"
],
"columns": ["publicId"],
"nullsNotDistinct": false
}
},
@@ -838,26 +776,18 @@
"_card_workspace_members_cardId_card_id_fk": {
"name": "_card_workspace_members_cardId_card_id_fk",
"tableFrom": "_card_workspace_members",
"columnsFrom": [
"cardId"
],
"columnsFrom": ["cardId"],
"tableTo": "card",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
},
"_card_workspace_members_workspaceMemberId_workspace_members_id_fk": {
"name": "_card_workspace_members_workspaceMemberId_workspace_members_id_fk",
"tableFrom": "_card_workspace_members",
"columnsFrom": [
"workspaceMemberId"
],
"columnsFrom": ["workspaceMemberId"],
"tableTo": "workspace_members",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
}
@@ -865,10 +795,7 @@
"compositePrimaryKeys": {
"_card_workspace_members_cardId_workspaceMemberId_pk": {
"name": "_card_workspace_members_cardId_workspaceMemberId_pk",
"columns": [
"cardId",
"workspaceMemberId"
]
"columns": ["cardId", "workspaceMemberId"]
}
},
"uniqueConstraints": {},
@@ -959,52 +886,36 @@
"card_createdBy_user_id_fk": {
"name": "card_createdBy_user_id_fk",
"tableFrom": "card",
"columnsFrom": [
"createdBy"
],
"columnsFrom": ["createdBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
},
"card_deletedBy_user_id_fk": {
"name": "card_deletedBy_user_id_fk",
"tableFrom": "card",
"columnsFrom": [
"deletedBy"
],
"columnsFrom": ["deletedBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
},
"card_listId_list_id_fk": {
"name": "card_listId_list_id_fk",
"tableFrom": "card",
"columnsFrom": [
"listId"
],
"columnsFrom": ["listId"],
"tableTo": "list",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
},
"card_importId_import_id_fk": {
"name": "card_importId_import_id_fk",
"tableFrom": "card",
"columnsFrom": [
"importId"
],
"columnsFrom": ["importId"],
"tableTo": "import",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "no action"
}
@@ -1013,9 +924,7 @@
"uniqueConstraints": {
"card_publicId_unique": {
"name": "card_publicId_unique",
"columns": [
"publicId"
],
"columns": ["publicId"],
"nullsNotDistinct": false
}
},
@@ -1045,26 +954,18 @@
"_card_labels_cardId_card_id_fk": {
"name": "_card_labels_cardId_card_id_fk",
"tableFrom": "_card_labels",
"columnsFrom": [
"cardId"
],
"columnsFrom": ["cardId"],
"tableTo": "card",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
},
"_card_labels_labelId_label_id_fk": {
"name": "_card_labels_labelId_label_id_fk",
"tableFrom": "_card_labels",
"columnsFrom": [
"labelId"
],
"columnsFrom": ["labelId"],
"tableTo": "label",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
}
@@ -1072,10 +973,7 @@
"compositePrimaryKeys": {
"_card_labels_cardId_labelId_pk": {
"name": "_card_labels_cardId_labelId_pk",
"columns": [
"cardId",
"labelId"
]
"columns": ["cardId", "labelId"]
}
},
"uniqueConstraints": {},
@@ -1148,39 +1046,27 @@
"card_comments_cardId_card_id_fk": {
"name": "card_comments_cardId_card_id_fk",
"tableFrom": "card_comments",
"columnsFrom": [
"cardId"
],
"columnsFrom": ["cardId"],
"tableTo": "card",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
},
"card_comments_createdBy_user_id_fk": {
"name": "card_comments_createdBy_user_id_fk",
"tableFrom": "card_comments",
"columnsFrom": [
"createdBy"
],
"columnsFrom": ["createdBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
},
"card_comments_deletedBy_user_id_fk": {
"name": "card_comments_deletedBy_user_id_fk",
"tableFrom": "card_comments",
"columnsFrom": [
"deletedBy"
],
"columnsFrom": ["deletedBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
}
@@ -1189,9 +1075,7 @@
"uniqueConstraints": {
"card_comments_publicId_unique": {
"name": "card_comments_publicId_unique",
"columns": [
"publicId"
],
"columns": ["publicId"],
"nullsNotDistinct": false
}
},
@@ -1253,13 +1137,9 @@
"feedback_createdBy_user_id_fk": {
"name": "feedback_createdBy_user_id_fk",
"tableFrom": "feedback",
"columnsFrom": [
"createdBy"
],
"columnsFrom": ["createdBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
}
@@ -1319,13 +1199,9 @@
"import_createdBy_user_id_fk": {
"name": "import_createdBy_user_id_fk",
"tableFrom": "import",
"columnsFrom": [
"createdBy"
],
"columnsFrom": ["createdBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
}
@@ -1334,9 +1210,7 @@
"uniqueConstraints": {
"import_publicId_unique": {
"name": "import_publicId_unique",
"columns": [
"publicId"
],
"columns": ["publicId"],
"nullsNotDistinct": false
}
},
@@ -1421,52 +1295,36 @@
"label_createdBy_user_id_fk": {
"name": "label_createdBy_user_id_fk",
"tableFrom": "label",
"columnsFrom": [
"createdBy"
],
"columnsFrom": ["createdBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
},
"label_boardId_board_id_fk": {
"name": "label_boardId_board_id_fk",
"tableFrom": "label",
"columnsFrom": [
"boardId"
],
"columnsFrom": ["boardId"],
"tableTo": "board",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
},
"label_importId_import_id_fk": {
"name": "label_importId_import_id_fk",
"tableFrom": "label",
"columnsFrom": [
"importId"
],
"columnsFrom": ["importId"],
"tableTo": "import",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "no action"
},
"label_deletedBy_user_id_fk": {
"name": "label_deletedBy_user_id_fk",
"tableFrom": "label",
"columnsFrom": [
"deletedBy"
],
"columnsFrom": ["deletedBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
}
@@ -1475,9 +1333,7 @@
"uniqueConstraints": {
"label_publicId_unique": {
"name": "label_publicId_unique",
"columns": [
"publicId"
],
"columns": ["publicId"],
"nullsNotDistinct": false
}
},
@@ -1562,52 +1418,36 @@
"list_createdBy_user_id_fk": {
"name": "list_createdBy_user_id_fk",
"tableFrom": "list",
"columnsFrom": [
"createdBy"
],
"columnsFrom": ["createdBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
},
"list_deletedBy_user_id_fk": {
"name": "list_deletedBy_user_id_fk",
"tableFrom": "list",
"columnsFrom": [
"deletedBy"
],
"columnsFrom": ["deletedBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
},
"list_boardId_board_id_fk": {
"name": "list_boardId_board_id_fk",
"tableFrom": "list",
"columnsFrom": [
"boardId"
],
"columnsFrom": ["boardId"],
"tableTo": "board",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
},
"list_importId_import_id_fk": {
"name": "list_importId_import_id_fk",
"tableFrom": "list",
"columnsFrom": [
"importId"
],
"columnsFrom": ["importId"],
"tableTo": "import",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "no action"
}
@@ -1616,9 +1456,7 @@
"uniqueConstraints": {
"list_publicId_unique": {
"name": "list_publicId_unique",
"columns": [
"publicId"
],
"columns": ["publicId"],
"nullsNotDistinct": false
}
},
@@ -1688,9 +1526,7 @@
"uniqueConstraints": {
"user_email_unique": {
"name": "user_email_unique",
"columns": [
"email"
],
"columns": ["email"],
"nullsNotDistinct": false
}
},
@@ -1722,9 +1558,7 @@
"uniqueConstraints": {
"workspace_slugs_slug_unique": {
"name": "workspace_slugs_slug_unique",
"columns": [
"slug"
],
"columns": ["slug"],
"nullsNotDistinct": false
}
},
@@ -1818,39 +1652,27 @@
"workspace_members_userId_user_id_fk": {
"name": "workspace_members_userId_user_id_fk",
"tableFrom": "workspace_members",
"columnsFrom": [
"userId"
],
"columnsFrom": ["userId"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
},
"workspace_members_workspaceId_workspace_id_fk": {
"name": "workspace_members_workspaceId_workspace_id_fk",
"tableFrom": "workspace_members",
"columnsFrom": [
"workspaceId"
],
"columnsFrom": ["workspaceId"],
"tableTo": "workspace",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "cascade"
},
"workspace_members_deletedBy_user_id_fk": {
"name": "workspace_members_deletedBy_user_id_fk",
"tableFrom": "workspace_members",
"columnsFrom": [
"deletedBy"
],
"columnsFrom": ["deletedBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
}
@@ -1859,9 +1681,7 @@
"uniqueConstraints": {
"workspace_members_publicId_unique": {
"name": "workspace_members_publicId_unique",
"columns": [
"publicId"
],
"columns": ["publicId"],
"nullsNotDistinct": false
}
},
@@ -1948,26 +1768,18 @@
"workspace_createdBy_user_id_fk": {
"name": "workspace_createdBy_user_id_fk",
"tableFrom": "workspace",
"columnsFrom": [
"createdBy"
],
"columnsFrom": ["createdBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
},
"workspace_deletedBy_user_id_fk": {
"name": "workspace_deletedBy_user_id_fk",
"tableFrom": "workspace",
"columnsFrom": [
"deletedBy"
],
"columnsFrom": ["deletedBy"],
"tableTo": "user",
"columnsTo": [
"id"
],
"columnsTo": ["id"],
"onUpdate": "no action",
"onDelete": "set null"
}
@@ -1976,16 +1788,12 @@
"uniqueConstraints": {
"workspace_publicId_unique": {
"name": "workspace_publicId_unique",
"columns": [
"publicId"
],
"columns": ["publicId"],
"nullsNotDistinct": false
},
"workspace_slug_unique": {
"name": "workspace_slug_unique",
"columns": [
"slug"
],
"columns": ["slug"],
"nullsNotDistinct": false
}
},
@@ -1998,10 +1806,7 @@
"public.board_visibility": {
"name": "board_visibility",
"schema": "public",
"values": [
"private",
"public"
]
"values": ["private", "public"]
},
"public.card_activity_type": {
"name": "card_activity_type",
@@ -2025,53 +1830,32 @@
"public.source": {
"name": "source",
"schema": "public",
"values": [
"trello"
]
"values": ["trello"]
},
"public.status": {
"name": "status",
"schema": "public",
"values": [
"started",
"success",
"failed"
]
"values": ["started", "success", "failed"]
},
"public.role": {
"name": "role",
"schema": "public",
"values": [
"admin",
"member",
"guest"
]
"values": ["admin", "member", "guest"]
},
"public.member_status": {
"name": "member_status",
"schema": "public",
"values": [
"invited",
"active",
"removed"
]
"values": ["invited", "active", "removed"]
},
"public.slug_type": {
"name": "slug_type",
"schema": "public",
"values": [
"reserved",
"premium"
]
"values": ["reserved", "premium"]
},
"public.workspace_plan": {
"name": "workspace_plan",
"schema": "public",
"values": [
"free",
"pro",
"enterprise"
]
"values": ["free", "pro", "enterprise"]
}
},
"schemas": {},
@@ -2084,4 +1868,4 @@
"schemas": {},
"tables": {}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -50,6 +50,13 @@
"when": 1749585889984,
"tag": "20250610200449_ReaddIntegrationTable",
"breakpoints": true
},
{
"idx": 7,
"version": "7",
"when": 1752582887553,
"tag": "20250715123447_AddCardChecklists",
"breakpoints": true
}
]
}

View File

@@ -12,6 +12,7 @@ import {
varchar,
} from "drizzle-orm/pg-core";
import { checklists } from "./checklists";
import { imports } from "./imports";
import { labels } from "./labels";
import { lists } from "./lists";
@@ -84,6 +85,7 @@ export const cardsRelations = relations(cards, ({ one, many }) => ({
}),
comments: many(comments),
activities: many(cardActivities),
checklists: many(checklists),
}));
export const cardActivities = pgTable("card_activity", {

View File

@@ -0,0 +1,90 @@
import { relations } from "drizzle-orm";
import {
bigint,
bigserial,
boolean,
integer,
pgTable,
timestamp,
uuid,
varchar,
} from "drizzle-orm/pg-core";
import { cards } from "./cards";
import { users } from "./users";
export const checklists = pgTable("card_checklist", {
id: bigserial("id", { mode: "number" }).primaryKey(),
publicId: varchar("publicId", { length: 12 }).notNull().unique(),
title: varchar("title", { length: 255 }).notNull(),
index: integer("index").notNull(),
cardId: bigint("cardId", { mode: "number" })
.notNull()
.references(() => cards.id, { onDelete: "cascade" }),
createdBy: uuid("createdBy").references(() => users.id, {
onDelete: "set null",
}),
createdAt: timestamp("createdAt").defaultNow().notNull(),
updatedAt: timestamp("updatedAt"),
deletedAt: timestamp("deletedAt"),
deletedBy: uuid("deletedBy").references(() => users.id, {
onDelete: "set null",
}),
}).enableRLS();
export const checklistsRelations = relations(checklists, ({ one, many }) => ({
card: one(cards, {
fields: [checklists.cardId],
references: [cards.id],
relationName: "checklistsCard",
}),
createdBy: one(users, {
fields: [checklists.createdBy],
references: [users.id],
relationName: "checklistsCreatedByUser",
}),
deletedBy: one(users, {
fields: [checklists.deletedBy],
references: [users.id],
relationName: "checklistsDeletedByUser",
}),
items: many(checklistItems),
}));
export const checklistItems = pgTable("card_checklist_item", {
id: bigserial("id", { mode: "number" }).primaryKey(),
publicId: varchar("publicId", { length: 12 }).notNull().unique(),
title: varchar("title", { length: 500 }).notNull(),
completed: boolean("completed").notNull().default(false),
index: integer("index").notNull(),
checklistId: bigint("checklistId", { mode: "number" })
.notNull()
.references(() => checklists.id, { onDelete: "cascade" }),
createdBy: uuid("createdBy").references(() => users.id, {
onDelete: "set null",
}),
createdAt: timestamp("createdAt").defaultNow().notNull(),
updatedAt: timestamp("updatedAt"),
deletedAt: timestamp("deletedAt"),
deletedBy: uuid("deletedBy").references(() => users.id, {
onDelete: "set null",
}),
}).enableRLS();
export const checklistItemsRelations = relations(checklistItems, ({ one }) => ({
checklist: one(checklists, {
fields: [checklistItems.checklistId],
references: [checklists.id],
relationName: "checklistItemsChecklist",
}),
createdBy: one(users, {
fields: [checklistItems.createdBy],
references: [users.id],
relationName: "checklistItemsCreatedByUser",
}),
deletedBy: one(users, {
fields: [checklistItems.deletedBy],
references: [users.id],
relationName: "checklistItemsDeletedByUser",
}),
}));

View File

@@ -2,6 +2,7 @@ export * from "./auth";
export * from "./boards";
export * from "./auth";
export * from "./cards";
export * from "./checklists";
export * from "./feedback";
export * from "./imports";
export * from "./labels";