AkurAI Build
Menu

AkurAI-Build

public

Latest change 20dad6d02033d14ae8d348daf8be44524b5a8ecd - Add secure collaboration and Build operations by Ólafur Búi Ólafsson

-- Repository ownership, trust, and explicit collaborator permissions.
-- Existing rows remain trusted administrator-owned: NULL owner and trusted=1.
ALTER TABLE repositories ADD COLUMN owner_sub TEXT
    CHECK (owner_sub IS NULL OR length(owner_sub) BETWEEN 1 AND 256);
ALTER TABLE repositories ADD COLUMN owner_organization_id TEXT
    CHECK (owner_organization_id IS NULL OR length(owner_organization_id) BETWEEN 1 AND 128);
ALTER TABLE repositories ADD COLUMN trusted INTEGER NOT NULL DEFAULT 1
    CHECK (trusted IN (0, 1));

CREATE TABLE repository_collaborators (
    repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
    subject TEXT NOT NULL CHECK (length(subject) BETWEEN 1 AND 256),
    organization_id TEXT CHECK (organization_id IS NULL OR length(organization_id) BETWEEN 1 AND 128),
    role TEXT NOT NULL CHECK (role IN ('read', 'write', 'maintain')),
    created_at INTEGER NOT NULL DEFAULT (unixepoch()),
    PRIMARY KEY (repository_id, subject)
) STRICT;

CREATE INDEX repository_collaborators_subject
    ON repository_collaborators(subject, organization_id);
CREATE INDEX repositories_owner_organization
    ON repositories(owner_organization_id);

PRAGMA user_version = 7;