From 32f30737953b42525569472572dbb73824330547 Mon Sep 17 00:00:00 2001 From: Jiri Uhlir Date: Fri, 29 May 2026 10:43:53 +0200 Subject: [PATCH] Add deployment locks migration --- scripts/migrate-deployment-locks-db.sh | 44 ++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100755 scripts/migrate-deployment-locks-db.sh diff --git a/scripts/migrate-deployment-locks-db.sh b/scripts/migrate-deployment-locks-db.sh new file mode 100755 index 0000000..cc33e06 --- /dev/null +++ b/scripts/migrate-deployment-locks-db.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +set -euo pipefail + +DB_FILE="/opt/appfactory/data/appfactory/appfactory.db" + +if [ ! -f "$DB_FILE" ]; then + echo "Missing database: $DB_FILE" + exit 1 +fi + +python3 - "$DB_FILE" <<'PY' +import sqlite3 +import sys + +db_file = sys.argv[1] +con = sqlite3.connect(db_file) + +con.execute(""" +CREATE TABLE IF NOT EXISTS deployment_locks ( + target_type TEXT NOT NULL, + target_id TEXT NOT NULL, + job_id INTEGER NOT NULL, + worker_id TEXT NOT NULL, + acquired_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + expires_at TEXT, + PRIMARY KEY (target_type, target_id) +) +""") + +con.execute(""" +CREATE INDEX IF NOT EXISTS idx_deployment_locks_job_id +ON deployment_locks(job_id) +""") + +con.execute(""" +CREATE INDEX IF NOT EXISTS idx_deployment_locks_expires_at +ON deployment_locks(expires_at) +""") + +con.commit() +con.close() + +print("Deployment locks migration completed.") +PY