Menu
AkurAI-Build
publicLatest change 834088c92ff481a8a0cc0f5825c8fb9524396e7a - Build lean Git-native AkurAI CI/CD by Ólafur Búi Ólafsson
PRAGMA application_id = 1095456082;
PRAGMA user_version = 1;
CREATE TABLE repositories (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL UNIQUE CHECK (length(name) BETWEEN 1 AND 64),
url TEXT NOT NULL CHECK (length(url) BETWEEN 1 AND 2048),
default_branch TEXT NOT NULL CHECK (length(default_branch) BETWEEN 1 AND 200),
created_at INTEGER NOT NULL DEFAULT (unixepoch())
) STRICT;
CREATE TABLE runs (
id INTEGER PRIMARY KEY,
repository_id INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
git_ref TEXT NOT NULL CHECK (length(git_ref) BETWEEN 1 AND 200),
commit_sha TEXT CHECK (commit_sha IS NULL OR length(commit_sha) IN (40, 64)),
trigger TEXT NOT NULL CHECK (trigger IN ('manual', 'webhook', 'retry')),
status TEXT NOT NULL CHECK (status IN ('queued', 'running', 'waiting', 'succeeded', 'failed', 'canceled', 'interrupted')),
error TEXT,
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
started_at INTEGER,
finished_at INTEGER
) STRICT;
CREATE TABLE jobs (
id INTEGER PRIMARY KEY,
run_id INTEGER NOT NULL REFERENCES runs(id) ON DELETE CASCADE,
base_name TEXT NOT NULL,
name TEXT NOT NULL,
executor TEXT NOT NULL CHECK (executor IN ('docker', 'native')),
image TEXT,
platform TEXT,
status TEXT NOT NULL CHECK (status IN ('queued', 'running', 'waiting', 'succeeded', 'failed', 'skipped', 'canceled', 'interrupted')),
needs_json TEXT NOT NULL,
spec_json TEXT NOT NULL,
logs TEXT NOT NULL DEFAULT '',
exit_code INTEGER,
environment TEXT,
approval_required INTEGER NOT NULL CHECK (approval_required IN (0, 1)),
approved_at INTEGER,
started_at INTEGER,
finished_at INTEGER,
UNIQUE(run_id, name)
) STRICT;
CREATE TABLE artifacts (
id INTEGER PRIMARY KEY,
run_id INTEGER NOT NULL REFERENCES runs(id) ON DELETE CASCADE,
job_id INTEGER NOT NULL REFERENCES jobs(id) ON DELETE CASCADE,
name TEXT NOT NULL,
path TEXT NOT NULL UNIQUE,
sha256 TEXT NOT NULL CHECK (length(sha256) = 64),
bytes INTEGER NOT NULL CHECK (bytes >= 0),
created_at INTEGER NOT NULL DEFAULT (unixepoch())
) STRICT;
CREATE TABLE deployments (
id INTEGER PRIMARY KEY,
run_id INTEGER NOT NULL REFERENCES runs(id) ON DELETE CASCADE,
job_id INTEGER NOT NULL REFERENCES jobs(id) ON DELETE CASCADE,
environment TEXT NOT NULL,
status TEXT NOT NULL CHECK (status IN ('running', 'succeeded', 'failed')),
artifacts_json TEXT NOT NULL,
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
finished_at INTEGER
) STRICT;
CREATE INDEX runs_repository_created ON runs(repository_id, created_at DESC);
CREATE INDEX runs_status_created ON runs(status, created_at);
CREATE INDEX jobs_run_status ON jobs(run_id, status);
CREATE INDEX artifacts_run ON artifacts(run_id);
CREATE INDEX deployments_run ON deployments(run_id);