at main 1.5 kB view raw
1#!/usr/bin/env -S uv run --script --quiet 2"""run a specific migration against production database.""" 3 4import os 5import subprocess 6import sys 7from pathlib import Path 8 9from dotenv import load_dotenv 10 11 12def main(): 13 """run alembic upgrade head against production.""" 14 # load .env file 15 env_file = Path(__file__).parent.parent / ".env" 16 if not env_file.exists(): 17 print("❌ .env file not found") 18 sys.exit(1) 19 20 load_dotenv(env_file) 21 22 admin_db_url = os.getenv("ADMIN_DATABASE_URL") 23 if not admin_db_url: 24 print("❌ ADMIN_DATABASE_URL not found in .env") 25 sys.exit(1) 26 27 print("🔄 running migration against production database...") 28 29 # set DATABASE_URL to admin url for migration 30 env = os.environ.copy() 31 env["DATABASE_URL"] = admin_db_url 32 33 try: 34 result = subprocess.run( 35 ["uv", "run", "alembic", "upgrade", "head"], 36 check=True, 37 capture_output=True, 38 text=True, 39 env=env, 40 ) 41 42 print("✅ migration completed successfully") 43 print("\noutput:") 44 print(result.stdout) 45 46 if result.stderr: 47 print("\nstderr:") 48 print(result.stderr) 49 50 except subprocess.CalledProcessError as e: 51 print("❌ migration failed") 52 print("\nstdout:") 53 print(e.stdout) 54 print("\nstderr:") 55 print(e.stderr) 56 sys.exit(1) 57 58 59if __name__ == "__main__": 60 main()