DB backup script and alembic auto-backup hook #6

Merged
claude-code merged 4 commits from feat/5-db-backups into main 2026-04-17 11:57:19 -06:00
Showing only changes of commit a09860dc61 - Show all commits

View file

@ -1,4 +1,6 @@
import subprocess
from logging.config import fileConfig
from pathlib import Path
from sqlalchemy import engine_from_config, pool
@ -7,6 +9,28 @@ from alembic import context
from quartermaster.config import DB_URL
from quartermaster.models import Base
def _backup_before_migrations() -> None:
script = Path(__file__).resolve().parents[1] / "scripts" / "backup-db.sh"
if not script.is_file():
return
result = subprocess.run(
[str(script), "alembic"],
check=False,
capture_output=True,
text=True,
)
if result.stdout:
print(result.stdout, end="")
if result.returncode != 0 and result.stderr:
print(
f"alembic: backup-db.sh returned {result.returncode}; "
f"continuing without a fresh backup.\n{result.stderr}",
)
_backup_before_migrations()
config = context.config
config.set_main_option("sqlalchemy.url", DB_URL)