penpot/backend/src/app/migrations/sql/0031-add-conversation-related-tables.sql
Andrey Antukh ca83e13802 🎉 Initial work on comments subsystem.
Only workspace part; missing viewer and dashboard.
2020-10-21 13:18:26 +02:00

48 lines
1.5 KiB
SQL

CREATE TABLE comment_thread (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
file_id uuid NOT NULL REFERENCES file(id) ON DELETE CASCADE,
owner_id uuid NOT NULL REFERENCES profile(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
page_id uuid NOT NULL,
participants jsonb NOT NULL,
seqn integer NOT NULL DEFAULT 0,
position point NOT NULL,
is_resolved boolean NOT NULL DEFAULT false
);
CREATE INDEX comment_thread__owner_id__idx ON comment_thread(owner_id);
CREATE UNIQUE INDEX comment_thread__file_id__seqn__idx ON comment_thread(file_id, seqn);
CREATE TABLE comment_thread_status (
thread_id uuid NOT NULL REFERENCES comment_thread(id) ON DELETE CASCADE,
profile_id uuid NOT NULL REFERENCES profile(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
PRIMARY KEY (thread_id, profile_id)
);
CREATE TABLE comment (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
thread_id uuid NOT NULL REFERENCES comment_thread(id) ON DELETE CASCADE,
owner_id uuid NOT NULL REFERENCES profile(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
content text NOT NULL
);
CREATE INDEX comment__thread_id__idx ON comment(thread_id);
CREATE INDEX comment__owner_id__idx ON comment(owner_id);
ALTER TABLE file ADD COLUMN comment_thread_seqn integer DEFAULT 0;