23 lines
995 B
SQL
23 lines
995 B
SQL
ALTER TABLE workspaces ADD COLUMN is_private INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE pads ADD COLUMN is_private INTEGER NOT NULL DEFAULT 0;
|
|
CREATE TABLE resource_permissions (
|
|
resource_kind TEXT NOT NULL,
|
|
resource_slug TEXT NOT NULL,
|
|
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
permission TEXT NOT NULL CHECK(permission IN ('ro','rw')),
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY(resource_kind, resource_slug, user_id)
|
|
);
|
|
CREATE INDEX idx_resource_permissions_user ON resource_permissions(user_id);
|
|
CREATE TABLE resource_share_links (
|
|
token_hash TEXT PRIMARY KEY,
|
|
resource_kind TEXT NOT NULL,
|
|
resource_slug TEXT NOT NULL,
|
|
permission TEXT NOT NULL CHECK(permission IN ('ro','rw')),
|
|
expires_at TEXT,
|
|
created_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
revoked_at TEXT
|
|
);
|
|
CREATE INDEX idx_resource_share_links_resource ON resource_share_links(resource_kind, resource_slug);
|