gitdataai/libs/migrate/sql/m20260407_000002_create_project_board.sql
2026-04-15 09:08:09 +08:00

45 lines
1.7 KiB
SQL

CREATE TABLE IF NOT EXISTS project_board
(
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
project_uuid UUID NOT NULL,
name VARCHAR(255) NOT NULL,
description TEXT,
created_by UUID NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_project_board_project ON project_board (project_uuid);
CREATE TABLE IF NOT EXISTS project_board_column
(
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
board_uuid UUID NOT NULL REFERENCES project_board (id) ON DELETE CASCADE,
name VARCHAR(255) NOT NULL,
position INTEGER NOT NULL DEFAULT 0,
wip_limit INTEGER,
color VARCHAR(20)
);
CREATE INDEX IF NOT EXISTS idx_project_board_column_board ON project_board_column (board_uuid);
CREATE TABLE IF NOT EXISTS project_board_card
(
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
column_uuid UUID NOT NULL REFERENCES project_board_column (id) ON DELETE CASCADE,
issue_id BIGINT,
project UUID,
title VARCHAR(500) NOT NULL,
description TEXT,
position INTEGER NOT NULL DEFAULT 0,
assignee_id UUID,
due_date TIMESTAMPTZ,
priority VARCHAR(10),
created_by UUID NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_project_board_card_column ON project_board_card (column_uuid);
CREATE INDEX IF NOT EXISTS idx_project_board_card_issue ON project_board_card (issue_id) WHERE issue_id IS NOT NULL;