-- mergefix: squashed from 1500_mergefix.sql, 1501_mergefix_requeue.sql, 1502_mergefix_drop_ai_usage.sql.
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 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,
calls INTEGER NOT NULL DEFAULT 0,
result_json TEXT,
error TEXT,
created_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL,
queue_method TEXT CHECK (queue_method IN ('merge', 'squash')),
requeue_status TEXT CHECK (requeue_status IN ('waiting', 'enqueued', 'gave_up')),
requeue_attempts INTEGER NOT NULL DEFAULT 0,