share invitation

This commit is contained in:
Mateusz Gruszczyński
2026-07-24 10:20:27 +02:00
parent c728f27dcd
commit f52cf91470
19 changed files with 5512 additions and 685 deletions
@@ -0,0 +1,15 @@
CREATE TABLE resource_share_invitations (
token_hash VARCHAR(64) PRIMARY KEY,
resource_kind VARCHAR(16) NOT NULL,
resource_slug VARCHAR(255) NOT NULL,
user_id BIGINT NOT NULL,
permission VARCHAR(2) NOT NULL,
created_by BIGINT NOT NULL,
expires_at TEXT NOT NULL,
accepted_at TEXT NULL,
created_at TEXT NOT NULL DEFAULT (CURRENT_TIMESTAMP),
UNIQUE KEY uq_resource_share_invitation (resource_kind, resource_slug, user_id),
CONSTRAINT fk_share_invitation_user FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE,
CONSTRAINT fk_share_invitation_creator FOREIGN KEY(created_by) REFERENCES users(id) ON DELETE CASCADE
);
CREATE INDEX idx_resource_share_invitations_user ON resource_share_invitations(user_id);
@@ -0,0 +1,13 @@
CREATE TABLE resource_share_invitations (
token_hash TEXT PRIMARY KEY,
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_by BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
expires_at TEXT NOT NULL,
accepted_at TEXT,
created_at TEXT NOT NULL DEFAULT (CURRENT_TIMESTAMP::text),
UNIQUE(resource_kind, resource_slug, user_id)
);
CREATE INDEX idx_resource_share_invitations_user ON resource_share_invitations(user_id);
@@ -0,0 +1,13 @@
CREATE TABLE resource_share_invitations (
token_hash TEXT PRIMARY KEY,
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_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
expires_at TEXT NOT NULL,
accepted_at TEXT,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE(resource_kind, resource_slug, user_id)
);
CREATE INDEX idx_resource_share_invitations_user ON resource_share_invitations(user_id);