add initial space logic/behaviour

This commit is contained in:
juancwu 2026-01-14 15:25:10 +00:00
commit 219d254b96
10 changed files with 333 additions and 0 deletions

View file

@ -0,0 +1,32 @@
-- +goose Up
-- +goose StatementBegin
CREATE TABLE IF NOT EXISTS spaces (
id TEXT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
owner_id TEXT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS space_members (
space_id TEXT NOT NULL,
user_id TEXT NOT NULL,
role TEXT NOT NULL CHECK (role IN ('owner', 'member')),
joined_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (space_id, user_id),
FOREIGN KEY (space_id) REFERENCES spaces(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_spaces_owner ON spaces(owner_id);
CREATE INDEX IF NOT EXISTS idx_space_members_user ON space_members(user_id);
-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
DROP INDEX IF EXISTS idx_space_members_user;
DROP INDEX IF EXISTS idx_spaces_owner;
DROP TABLE IF EXISTS space_members;
DROP TABLE IF EXISTS spaces;
-- +goose StatementEnd