502 lines
20 KiB
SQL
502 lines
20 KiB
SQL
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
CREATE TYPE "public"."board_visibility" AS ENUM('private', 'public');--> statement-breakpoint
|
|
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 TYPE "public"."workspace_plan" AS ENUM('free', 'pro', 'enterprise');--> statement-breakpoint
|
|
CREATE TABLE IF NOT EXISTS "account" (
|
|
"id" bigserial PRIMARY KEY NOT NULL,
|
|
"accountId" text NOT NULL,
|
|
"providerId" text NOT NULL,
|
|
"userId" uuid NOT NULL,
|
|
"accessToken" text,
|
|
"refreshToken" text,
|
|
"idToken" text,
|
|
"accessTokenExpiresAt" timestamp,
|
|
"refreshTokenExpiresAt" timestamp,
|
|
"scope" text,
|
|
"password" text,
|
|
"createdAt" timestamp NOT NULL,
|
|
"updatedAt" timestamp NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE "account" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
CREATE TABLE IF NOT EXISTS "apiKey" (
|
|
"id" bigserial PRIMARY KEY NOT NULL,
|
|
"name" text,
|
|
"start" text,
|
|
"prefix" text,
|
|
"key" text NOT NULL,
|
|
"userId" uuid NOT NULL,
|
|
"refillInterval" integer,
|
|
"refillAmount" integer,
|
|
"lastRefillAt" timestamp,
|
|
"enabled" boolean,
|
|
"rateLimitEnabled" boolean,
|
|
"rateLimitTimeWindow" integer,
|
|
"rateLimitMax" integer,
|
|
"requestCount" integer,
|
|
"remaining" integer,
|
|
"lastRequest" timestamp,
|
|
"expiresAt" timestamp,
|
|
"createdAt" timestamp NOT NULL,
|
|
"updatedAt" timestamp NOT NULL,
|
|
"permissions" text,
|
|
"metadata" text
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE "apiKey" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
CREATE TABLE IF NOT EXISTS "session" (
|
|
"id" bigserial PRIMARY KEY NOT NULL,
|
|
"expiresAt" timestamp NOT NULL,
|
|
"token" text NOT NULL,
|
|
"createdAt" timestamp NOT NULL,
|
|
"updatedAt" timestamp NOT NULL,
|
|
"ipAddress" text,
|
|
"userAgent" text,
|
|
"userId" uuid NOT NULL,
|
|
CONSTRAINT "session_token_unique" UNIQUE("token")
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE "session" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
CREATE TABLE IF NOT EXISTS "verification" (
|
|
"id" bigserial PRIMARY KEY NOT NULL,
|
|
"identifier" text NOT NULL,
|
|
"value" text NOT NULL,
|
|
"expiresAt" timestamp NOT NULL,
|
|
"createdAt" timestamp,
|
|
"updatedAt" timestamp
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE "verification" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
CREATE TABLE IF NOT EXISTS "board" (
|
|
"id" bigserial PRIMARY KEY NOT NULL,
|
|
"publicId" varchar(12) NOT NULL,
|
|
"name" varchar(255) NOT NULL,
|
|
"description" text,
|
|
"slug" 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,
|
|
"visibility" "board_visibility" DEFAULT 'private' NOT NULL,
|
|
CONSTRAINT "board_publicId_unique" UNIQUE("publicId")
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE "board" ENABLE ROW LEVEL SECURITY;--> 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
|
|
ALTER TABLE "card_activity" ENABLE ROW LEVEL SECURITY;--> 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
|
|
ALTER TABLE "_card_workspace_members" ENABLE ROW LEVEL SECURITY;--> 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
|
|
ALTER TABLE "card" ENABLE ROW LEVEL SECURITY;--> 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
|
|
ALTER TABLE "_card_labels" ENABLE ROW LEVEL SECURITY;--> 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
|
|
ALTER TABLE "card_comments" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
CREATE TABLE IF NOT EXISTS "feedback" (
|
|
"id" bigserial PRIMARY KEY NOT NULL,
|
|
"feedback" text NOT NULL,
|
|
"createdBy" uuid NOT NULL,
|
|
"createdAt" timestamp DEFAULT now() NOT NULL,
|
|
"updatedAt" timestamp,
|
|
"url" text NOT NULL,
|
|
"reviewed" boolean DEFAULT false NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE "feedback" ENABLE ROW LEVEL SECURITY;--> 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
|
|
ALTER TABLE "import" ENABLE ROW LEVEL SECURITY;--> 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
|
|
ALTER TABLE "label" ENABLE ROW LEVEL SECURITY;--> 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
|
|
ALTER TABLE "list" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
CREATE TABLE IF NOT EXISTS "user" (
|
|
"id" uuid PRIMARY KEY DEFAULT uuid_generate_v4() NOT NULL,
|
|
"name" varchar(255),
|
|
"email" varchar(255) NOT NULL,
|
|
"emailVerified" boolean NOT NULL,
|
|
"image" varchar(255),
|
|
"createdAt" timestamp DEFAULT now() NOT NULL,
|
|
"updatedAt" timestamp DEFAULT now() NOT NULL,
|
|
"stripeCustomerId" varchar(255),
|
|
CONSTRAINT "user_email_unique" UNIQUE("email")
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE "user" ENABLE ROW LEVEL SECURITY;--> 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 "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
|
|
ALTER TABLE "workspace_members" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
CREATE TABLE IF NOT EXISTS "workspace" (
|
|
"id" bigserial PRIMARY KEY NOT NULL,
|
|
"publicId" varchar(12) NOT NULL,
|
|
"name" varchar(255) NOT NULL,
|
|
"description" text,
|
|
"slug" varchar(255) NOT NULL,
|
|
"plan" "workspace_plan" DEFAULT 'free' 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
|
|
ALTER TABLE "workspace" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
DO $$ BEGIN
|
|
ALTER TABLE "account" ADD CONSTRAINT "account_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 $$;
|
|
--> statement-breakpoint
|
|
DO $$ BEGIN
|
|
ALTER TABLE "apiKey" ADD CONSTRAINT "apiKey_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 $$;
|
|
--> statement-breakpoint
|
|
DO $$ BEGIN
|
|
ALTER TABLE "session" ADD CONSTRAINT "session_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 $$;
|
|
--> 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 "feedback" ADD CONSTRAINT "feedback_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 "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 $$;
|
|
--> statement-breakpoint
|
|
CREATE INDEX IF NOT EXISTS "board_visibility_idx" ON "board" USING btree ("visibility");--> statement-breakpoint
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "unique_slug_per_workspace" ON "board" USING btree ("workspaceId","slug") WHERE "board"."deletedAt" IS NULL; |