CREATE TABLE repo_mergefix_settings (
repo_id TEXT PRIMARY KEY REFERENCES repos(id) ON DELETE CASCADE,
queue_enabled INTEGER NOT NULL DEFAULT 0,
allow_private INTEGER NOT NULL DEFAULT 0,
min_confidence REAL NOT NULL DEFAULT 0.8,
min_margin REAL NOT NULL DEFAULT 0.3,
updated_at INTEGER NOT NULL
);
CREATE TABLE account_ai_keys (
account_id TEXT PRIMARY KEY REFERENCES accounts(id) ON DELETE CASCADE,
provider TEXT NOT NULL,
model TEXT NOT NULL,
key_ciphertext TEXT NOT NULL,
key_iv TEXT NOT NULL,
updated_by TEXT,
updated_at INTEGER NOT NULL
);
CREATE TABLE ai_usage (
account_id TEXT NOT NULL REFERENCES accounts(id) ON DELETE CASCADE,
month TEXT NOT NULL,
calls INTEGER NOT NULL DEFAULT 0,
input_tokens INTEGER NOT NULL DEFAULT 0,
output_tokens INTEGER NOT NULL DEFAULT 0,
byok_calls INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY (account_id, month)
);
CREATE TABLE mergefix_runs (
id TEXT PRIMARY KEY,
pull_issue_id TEXT NOT NULL REFERENCES issues(id) ON DELETE CASCADE,
repo_id TEXT NOT NULL REFERENCES repos(id) ON DELETE CASCADE,
account_id TEXT NOT NULL,
actor_id TEXT NOT NULL,
trigger TEXT NOT NULL CHECK (trigger IN ('button', 'queue')),
status TEXT NOT NULL CHECK (status IN ('queued', 'running', 'applying', 'applied', 'suggested', 'failed')),
head_sha TEXT NOT NULL,
base_sha TEXT,
commit_sha TEXT,