music on atproto
plyr.fm
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()