alphax/scripts/postgres/run_migrations.py
2026-05-16 14:52:10 +08:00

40 lines
1.2 KiB
Python
Executable File

#!/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())