Files
echoes-of-the-ash/migrations/fix_telegram_id_nullable.py
2025-11-07 15:27:13 +01:00

38 lines
1.2 KiB
Python

#!/usr/bin/env python3
"""
Fix telegram_id column to be nullable for web users.
"""
import asyncio
import os
from sqlalchemy.ext.asyncio import create_async_engine
from sqlalchemy import text
# Database connection
DB_USER = os.getenv("POSTGRES_USER", "echoes_user")
DB_PASS = os.getenv("POSTGRES_PASSWORD", "echoes_pass")
DB_NAME = os.getenv("POSTGRES_DB", "echoes_db")
DB_HOST = os.getenv("POSTGRES_HOST", "echoes_of_the_ashes_db")
DB_PORT = os.getenv("POSTGRES_PORT", "5432")
DATABASE_URL = f"postgresql+psycopg://{DB_USER}:{DB_PASS}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
async def fix_telegram_id():
"""Alter telegram_id column to be nullable"""
engine = create_async_engine(DATABASE_URL, echo=True)
try:
async with engine.begin() as conn:
print("Making telegram_id nullable...")
await conn.execute(text(
"ALTER TABLE players ALTER COLUMN telegram_id DROP NOT NULL;"
))
print("✅ telegram_id is now nullable!")
except Exception as e:
print(f"❌ Error: {e}")
finally:
await engine.dispose()
if __name__ == "__main__":
asyncio.run(fix_telegram_id())