share funxtions
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
ALTER TABLE workspaces ADD COLUMN is_private BOOLEAN NOT NULL DEFAULT FALSE;
|
||||
ALTER TABLE pads ADD COLUMN is_private BOOLEAN NOT NULL DEFAULT FALSE;
|
||||
CREATE TABLE resource_permissions (
|
||||
resource_kind VARCHAR(16) NOT NULL,
|
||||
resource_slug VARCHAR(255) NOT NULL,
|
||||
user_id BIGINT NOT NULL,
|
||||
permission VARCHAR(2) NOT NULL,
|
||||
created_at TEXT NOT NULL DEFAULT (CURRENT_TIMESTAMP),
|
||||
PRIMARY KEY(resource_kind, resource_slug, user_id),
|
||||
CONSTRAINT fk_resource_permissions_user FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_resource_permissions_user ON resource_permissions(user_id);
|
||||
CREATE TABLE resource_share_links (
|
||||
token_hash VARCHAR(64) PRIMARY KEY,
|
||||
resource_kind VARCHAR(16) NOT NULL,
|
||||
resource_slug VARCHAR(255) NOT NULL,
|
||||
permission VARCHAR(2) NOT NULL,
|
||||
expires_at TEXT NULL,
|
||||
created_by BIGINT NOT NULL,
|
||||
created_at TEXT NOT NULL DEFAULT (CURRENT_TIMESTAMP),
|
||||
revoked_at TEXT NULL,
|
||||
CONSTRAINT fk_resource_share_links_user FOREIGN KEY(created_by) REFERENCES users(id) ON DELETE CASCADE
|
||||
);
|
||||
CREATE INDEX idx_resource_share_links_resource ON resource_share_links(resource_kind, resource_slug);
|
||||
@@ -0,0 +1,22 @@
|
||||
ALTER TABLE workspaces ADD COLUMN is_private BOOLEAN NOT NULL DEFAULT FALSE;
|
||||
ALTER TABLE pads ADD COLUMN is_private BOOLEAN NOT NULL DEFAULT FALSE;
|
||||
CREATE TABLE resource_permissions (
|
||||
resource_kind TEXT NOT NULL,
|
||||
resource_slug TEXT NOT NULL,
|
||||
user_id BIGINT 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::text),
|
||||
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 BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
created_at TEXT NOT NULL DEFAULT (CURRENT_TIMESTAMP::text),
|
||||
revoked_at TEXT
|
||||
);
|
||||
CREATE INDEX idx_resource_share_links_resource ON resource_share_links(resource_kind, resource_slug);
|
||||
@@ -0,0 +1,22 @@
|
||||
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);
|
||||
Reference in New Issue
Block a user