WIP: Add a migration for project membmership
Signed-off-by: Nikolai Rodionov <iam@allanger.xyz>
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/jackc/pgerrcode"
|
"github.com/jackc/pgerrcode"
|
||||||
@@ -103,5 +104,6 @@ func ListProjects(ctx context.Context, db *sql.DB) ([]*ProjectData, error) {
|
|||||||
FROM projects p
|
FROM projects p
|
||||||
JOIN project_membership pm ON pm.project_id = p.id
|
JOIN project_membership pm ON pm.project_id = p.id
|
||||||
WHERE pm.user_id = ?`
|
WHERE pm.user_id = ?`
|
||||||
|
fmt.Println(query)
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
DROP INDEX IF EXISTS idx_project_memberships_project;
|
||||||
|
DROP INDEX IF EXISTS idx_project_memberships_user;
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS project_memberships;
|
||||||
|
|
||||||
|
DROP TYPE IF EXISTS membership_status;
|
||||||
|
DROP TYPE IF EXISTS project_role;
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
CREATE TYPE project_role AS ENUM (
|
||||||
|
'member',
|
||||||
|
'admin',
|
||||||
|
'owner'
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TYPE membership_status AS ENUM (
|
||||||
|
'invited',
|
||||||
|
'active',
|
||||||
|
'suspended'
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE project_memberships (
|
||||||
|
project_uuid UUID NOT NULL
|
||||||
|
REFERENCES projects(uuid)
|
||||||
|
ON DELETE CASCADE,
|
||||||
|
|
||||||
|
user_uuid UUID NOT NULL
|
||||||
|
REFERENCES accounts(uuid)
|
||||||
|
ON DELETE CASCADE,
|
||||||
|
|
||||||
|
role project_role NOT NULL,
|
||||||
|
status membership_status NOT NULL DEFAULT 'active',
|
||||||
|
|
||||||
|
invited_by UUID NULL
|
||||||
|
REFERENCES accounts(uuid),
|
||||||
|
joined_at TIMESTAMP NULL,
|
||||||
|
PRIMARY KEY (project_uuid, user_uuid)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_project_memberships_user
|
||||||
|
ON project_memberships(user_uuid);
|
||||||
|
|
||||||
|
CREATE INDEX idx_project_memberships_project
|
||||||
|
ON project_memberships(project_uuid);
|
||||||
|
|||||||
Reference in New Issue
Block a user