remove all foreign key constraints from SQL migrations
Foreign keys at the database level cause issues with deployment flexibility. Keep only indexes for query performance; enforce referential integrity at the application level.
This commit is contained in:
parent
2f31e7268b
commit
3a8b8c9cf8
@ -2,9 +2,9 @@
|
|||||||
CREATE TABLE IF NOT EXISTS room_message_reaction
|
CREATE TABLE IF NOT EXISTS room_message_reaction
|
||||||
(
|
(
|
||||||
id UUID PRIMARY KEY,
|
id UUID PRIMARY KEY,
|
||||||
room UUID NOT NULL REFERENCES room (id) ON DELETE CASCADE,
|
room UUID NOT NULL,
|
||||||
message UUID NOT NULL REFERENCES room_message (id) ON DELETE CASCADE,
|
message UUID NOT NULL,
|
||||||
"user" UUID NOT NULL REFERENCES "user" (uid) ON DELETE CASCADE,
|
"user" UUID NOT NULL,
|
||||||
emoji VARCHAR(50) NOT NULL,
|
emoji VARCHAR(50) NOT NULL,
|
||||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||||||
UNIQUE (message, "user", emoji)
|
UNIQUE (message, "user", emoji)
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
CREATE TABLE IF NOT EXISTS room_message_edit_history
|
CREATE TABLE IF NOT EXISTS room_message_edit_history
|
||||||
(
|
(
|
||||||
id UUID PRIMARY KEY,
|
id UUID PRIMARY KEY,
|
||||||
message UUID NOT NULL REFERENCES room_message (id) ON DELETE CASCADE,
|
message UUID NOT NULL,
|
||||||
"user" UUID NOT NULL REFERENCES "user" (uid) ON DELETE CASCADE,
|
"user" UUID NOT NULL,
|
||||||
old_content TEXT NOT NULL,
|
old_content TEXT NOT NULL,
|
||||||
new_content TEXT NOT NULL,
|
new_content TEXT NOT NULL,
|
||||||
edited_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
|
edited_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
|
||||||
|
|||||||
@ -14,7 +14,7 @@ CREATE INDEX IF NOT EXISTS idx_project_board_project ON project_board (project_u
|
|||||||
CREATE TABLE IF NOT EXISTS project_board_column
|
CREATE TABLE IF NOT EXISTS project_board_column
|
||||||
(
|
(
|
||||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
board_uuid UUID NOT NULL REFERENCES project_board (id) ON DELETE CASCADE,
|
board_uuid UUID NOT NULL,
|
||||||
name VARCHAR(255) NOT NULL,
|
name VARCHAR(255) NOT NULL,
|
||||||
position INTEGER NOT NULL DEFAULT 0,
|
position INTEGER NOT NULL DEFAULT 0,
|
||||||
wip_limit INTEGER,
|
wip_limit INTEGER,
|
||||||
@ -26,7 +26,7 @@ CREATE INDEX IF NOT EXISTS idx_project_board_column_board ON project_board_colum
|
|||||||
CREATE TABLE IF NOT EXISTS project_board_card
|
CREATE TABLE IF NOT EXISTS project_board_card
|
||||||
(
|
(
|
||||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
column_uuid UUID NOT NULL REFERENCES project_board_column (id) ON DELETE CASCADE,
|
column_uuid UUID NOT NULL,
|
||||||
issue_id BIGINT,
|
issue_id BIGINT,
|
||||||
project UUID,
|
project UUID,
|
||||||
title VARCHAR(500) NOT NULL,
|
title VARCHAR(500) NOT NULL,
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
ALTER TABLE project
|
ALTER TABLE project
|
||||||
ADD COLUMN workspace_id UUID REFERENCES workspace(id) ON DELETE SET NULL;
|
ADD COLUMN workspace_id UUID;
|
||||||
|
|
||||||
CREATE INDEX idx_project_workspace_id ON project (workspace_id) WHERE workspace_id IS NOT NULL;
|
CREATE INDEX idx_project_workspace_id ON project (workspace_id) WHERE workspace_id IS NOT NULL;
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
CREATE TABLE IF NOT EXISTS workspace_billing (
|
CREATE TABLE IF NOT EXISTS workspace_billing (
|
||||||
workspace_id UUID PRIMARY KEY REFERENCES workspace(id) ON DELETE CASCADE,
|
workspace_id UUID PRIMARY KEY,
|
||||||
balance DECIMAL(20, 4) NOT NULL DEFAULT 0,
|
balance DECIMAL(20, 4) NOT NULL DEFAULT 0,
|
||||||
currency VARCHAR(10) NOT NULL DEFAULT 'USD',
|
currency VARCHAR(10) NOT NULL DEFAULT 'USD',
|
||||||
monthly_quota DECIMAL(20, 4) NOT NULL DEFAULT 0,
|
monthly_quota DECIMAL(20, 4) NOT NULL DEFAULT 0,
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
CREATE TABLE IF NOT EXISTS workspace_billing_history
|
CREATE TABLE IF NOT EXISTS workspace_billing_history
|
||||||
(
|
(
|
||||||
uid UUID PRIMARY KEY,
|
uid UUID PRIMARY KEY,
|
||||||
workspace_id UUID NOT NULL REFERENCES workspace (id) ON DELETE CASCADE,
|
workspace_id UUID NOT NULL,
|
||||||
user_id UUID,
|
user_id UUID,
|
||||||
amount DECIMAL(20, 4) NOT NULL,
|
amount DECIMAL(20, 4) NOT NULL,
|
||||||
currency VARCHAR(10) NOT NULL DEFAULT 'USD',
|
currency VARCHAR(10) NOT NULL DEFAULT 'USD',
|
||||||
|
|||||||
@ -22,9 +22,7 @@ CREATE TABLE IF NOT EXISTS agent_task
|
|||||||
started_at TIMESTAMPTZ,
|
started_at TIMESTAMPTZ,
|
||||||
done_at TIMESTAMPTZ,
|
done_at TIMESTAMPTZ,
|
||||||
-- Progress info (step count, current status text)
|
-- Progress info (step count, current status text)
|
||||||
progress VARCHAR(255),
|
progress VARCHAR(255)
|
||||||
-- Parent task FK
|
|
||||||
CONSTRAINT fk_agent_task_parent FOREIGN KEY (parent_id) REFERENCES agent_task(id) ON DELETE SET NULL
|
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_agent_task_project ON agent_task (project_uuid);
|
CREATE INDEX IF NOT EXISTS idx_agent_task_project ON agent_task (project_uuid);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user