23 lines
922 B
PL/PgSQL
23 lines
922 B
PL/PgSQL
BEGIN;
|
|
CREATE TABLE workspaces (
|
|
id uuid PRIMARY KEY,
|
|
owner_id uuid NOT NULL REFERENCES account_users(id),
|
|
name text NOT NULL CHECK (char_length(name) BETWEEN 1 AND 40),
|
|
purpose text NOT NULL CHECK (purpose IN ('工作与团队','个人创作','学习与研究')),
|
|
created_at timestamptz NOT NULL DEFAULT now()
|
|
);
|
|
CREATE TABLE workspace_members (
|
|
workspace_id uuid NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
|
|
user_id uuid NOT NULL REFERENCES account_users(id) ON DELETE CASCADE,
|
|
PRIMARY KEY (workspace_id, user_id)
|
|
);
|
|
CREATE INDEX workspace_members_user ON workspace_members(user_id);
|
|
CREATE TABLE workspace_invites (
|
|
digest text PRIMARY KEY,
|
|
workspace_id uuid NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
|
|
expires_at timestamptz NOT NULL
|
|
);
|
|
CREATE INDEX workspace_invites_workspace ON workspace_invites(workspace_id);
|
|
INSERT INTO schema_migrations(version) VALUES ('018_workspaces');
|
|
COMMIT;
|