#!/usr/bin/env python3 """Apply PostgreSQL SQL migrations in lexical order.""" from __future__ import annotations import argparse import sys from pathlib import Path REPO_ROOT = Path(__file__).resolve().parents[2] if str(REPO_ROOT) not in sys.path: sys.path.insert(0, str(REPO_ROOT)) from app.db.postgres_connection import apply_migrations # noqa: E402 MIGRATIONS_DIR = REPO_ROOT / "app" / "db" / "migrations" def run_migrations(database_url: str | None = None, migrations_dir: Path = MIGRATIONS_DIR) -> list[str]: return apply_migrations(database_url, migrations_dir) def main() -> int: parser = argparse.ArgumentParser(description="Apply AlphaX PostgreSQL migrations.") parser.add_argument("--database-url", default=None, help="Override DATABASE_URL.") parser.add_argument("--migrations-dir", type=Path, default=MIGRATIONS_DIR) args = parser.parse_args() applied = run_migrations(args.database_url, args.migrations_dir) if applied: print(f"[migrate] applied {len(applied)} migration(s): {', '.join(applied)}") else: print("[migrate] database already up to date") return 0 if __name__ == "__main__": raise SystemExit(main())