from __future__ import annotations import argparse import os from pathlib import Path from dotenv import load_dotenv from app.db.sqlite_migration import migrate_sqlite_to_postgres def main() -> None: load_dotenv(Path(__file__).resolve().parents[1] / ".env", override=False) parser = argparse.ArgumentParser(description="One-time SQLite to PostgreSQL Resume Agent migration") parser.add_argument("source", type=Path, help="Path to the legacy SQLite database") parser.add_argument("--database-url", default=os.getenv("DATABASE_URL")) parser.add_argument("--schema", default="resume_agent") parser.add_argument( "--conflict-policy", choices=("error", "update"), default="error", ) parser.add_argument("--dry-run", action="store_true") args = parser.parse_args() if not args.database_url: parser.error("--database-url or DATABASE_URL is required") report = migrate_sqlite_to_postgres( args.source, args.database_url, schema=args.schema, dry_run=args.dry_run, conflict_policy=args.conflict_policy, ) print(report) if __name__ == "__main__": main()