Menu
AkurAI-Build
publicLatest change 42b1f6e0e604d1858cd129b8c3fa41817a61163c - feat: add managed deployment provenance by Ólafur Búi Ólafsson
ALTER TABLE deployments ADD COLUMN organization_id TEXT CHECK (organization_id IS NULL OR length(organization_id) BETWEEN 1 AND 128);
ALTER TABLE deployments ADD COLUMN workspace_id TEXT CHECK (workspace_id IS NULL OR length(workspace_id) BETWEEN 1 AND 128);
ALTER TABLE deployments ADD COLUMN installation_id TEXT CHECK (installation_id IS NULL OR length(installation_id) BETWEEN 1 AND 128);
ALTER TABLE deployments ADD COLUMN app_id TEXT CHECK (app_id IS NULL OR length(app_id) BETWEEN 1 AND 128);
ALTER TABLE deployments ADD COLUMN installation_revision INTEGER CHECK (installation_revision IS NULL OR installation_revision > 0);
ALTER TABLE deployments ADD COLUMN commit_sha TEXT CHECK (commit_sha IS NULL OR length(commit_sha) IN (40, 64));
ALTER TABLE deployments ADD COLUMN artifact_digest TEXT CHECK (artifact_digest IS NULL OR length(artifact_digest) = 64);
ALTER TABLE deployments ADD COLUMN result TEXT CHECK (result IS NULL OR result IN ('success', 'failure', 'rollback', 'recovery'));
ALTER TABLE deployments ADD COLUMN rollback_of_deployment_id INTEGER REFERENCES deployments(id) ON DELETE SET NULL;
ALTER TABLE deployments ADD COLUMN recovery_of_deployment_id INTEGER REFERENCES deployments(id) ON DELETE SET NULL;
CREATE TABLE managed_installations (
installation_id TEXT PRIMARY KEY CHECK (length(installation_id) BETWEEN 1 AND 128),
organization_id TEXT NOT NULL CHECK (length(organization_id) BETWEEN 1 AND 128),
workspace_id TEXT NOT NULL CHECK (length(workspace_id) BETWEEN 1 AND 128),
app_id TEXT NOT NULL CHECK (length(app_id) BETWEEN 1 AND 128),
revision INTEGER NOT NULL CHECK (revision > 0),
updated_at INTEGER NOT NULL DEFAULT (unixepoch())
) STRICT;
CREATE TABLE installation_revisions (
installation_id TEXT NOT NULL REFERENCES managed_installations(installation_id) ON DELETE CASCADE,
revision INTEGER NOT NULL CHECK (revision > 0),
organization_id TEXT NOT NULL CHECK (length(organization_id) BETWEEN 1 AND 128),
workspace_id TEXT NOT NULL CHECK (length(workspace_id) BETWEEN 1 AND 128),
app_id TEXT NOT NULL CHECK (length(app_id) BETWEEN 1 AND 128),
idempotency_key TEXT NOT NULL CHECK (length(idempotency_key) BETWEEN 1 AND 256),
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
PRIMARY KEY (installation_id, revision),
UNIQUE (installation_id, idempotency_key)
) STRICT;
CREATE INDEX installation_revisions_tenant
ON installation_revisions(organization_id, workspace_id, installation_id, revision DESC);
CREATE INDEX deployments_metrics
ON deployments(environment, status, created_at);
CREATE INDEX deployments_tenant
ON deployments(organization_id, workspace_id, installation_id, created_at);
PRAGMA user_version = 4;