mirror of
https://github.com/penpot/penpot.git
synced 2025-06-02 08:11:41 +02:00
✨ Minor improvements on projects_roles table.
This commit is contained in:
parent
b66bc02098
commit
b4336f7ceb
5 changed files with 25 additions and 37 deletions
|
@ -1,4 +1,4 @@
|
|||
-- Table
|
||||
-- Tables
|
||||
|
||||
CREATE TABLE IF NOT EXISTS projects (
|
||||
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
|
@ -11,7 +11,7 @@ CREATE TABLE IF NOT EXISTS projects (
|
|||
name text NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS projects_roles (
|
||||
CREATE TABLE IF NOT EXISTS projects_users (
|
||||
user_id uuid NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
project_id uuid NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
||||
|
||||
|
@ -23,29 +23,28 @@ CREATE TABLE IF NOT EXISTS projects_roles (
|
|||
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);
|
||||
CREATE INDEX projects_users_user_id_idx ON projects_users(project_id);
|
||||
CREATE INDEX projects_users_project_id_idx ON projects_users(user_id);
|
||||
|
||||
-- Triggers
|
||||
|
||||
CREATE OR REPLACE FUNCTION handle_project_insert()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
INSERT INTO projects_users (user_id, project_id, role)
|
||||
VALUES (NEW.user_id, NEW.id, 'owner');
|
||||
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE TRIGGER projects_on_insert_tgr
|
||||
AFTER INSERT ON projects
|
||||
FOR EACH ROW EXECUTE PROCEDURE handle_project_insert();
|
||||
|
||||
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();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue