mirror of
https://github.com/penpot/penpot.git
synced 2025-02-03 21:09:00 -05:00
51 lines
1.5 KiB
SQL
51 lines
1.5 KiB
SQL
-- Table
|
|
|
|
CREATE TABLE IF NOT EXISTS projects (
|
|
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
user_id uuid NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
|
|
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
|
|
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
|
|
deleted_at timestamptz DEFAULT NULL,
|
|
|
|
name text NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS projects_roles (
|
|
user_id uuid NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
project_id uuid NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
|
|
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
|
|
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
|
|
|
|
role text NOT NULL,
|
|
|
|
PRIMARY KEY (user_id, project_id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS project_shares (
|
|
project_id uuid PRIMARY KEY REFERENCES projects(id) ON DELETE CASCADE,
|
|
|
|
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
|
|
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
|
|
|
|
token text NOT NULL
|
|
);
|
|
|
|
-- Indexes
|
|
|
|
CREATE INDEX projects_user_idx ON projects(user_id);
|
|
CREATE INDEX projects_roles_user_id_idx ON projects_roles(project_id);
|
|
CREATE INDEX projects_roles_project_id_idx ON projects_roles(user_id);
|
|
|
|
CREATE UNIQUE INDEX projects_shares_token_idx ON project_shares(token);
|
|
|
|
-- Triggers
|
|
|
|
CREATE TRIGGER projects_modified_at_tgr
|
|
BEFORE UPDATE ON projects
|
|
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
|
|
|
|
CREATE TRIGGER project_shares_modified_at_tgr
|
|
BEFORE UPDATE ON project_shares
|
|
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
|