#!/usr/bin/env python3
"""
Migration script to add player_status_effects table.
This table stores persistent status effects that can exist both during and outside of combat.
"""
import asyncio
import os
from sqlalchemy.ext.asyncio import create_async_engine
from sqlalchemy import text
from dotenv import load_dotenv

load_dotenv()

# Database connection
DB_USER = os.getenv("POSTGRES_USER")
DB_PASS = os.getenv("POSTGRES_PASSWORD")
DB_NAME = os.getenv("POSTGRES_DB")
DB_HOST = os.getenv("POSTGRES_HOST")
DB_PORT = os.getenv("POSTGRES_PORT")
DATABASE_URL = f"postgresql+psycopg://{DB_USER}:{DB_PASS}@{DB_HOST}:{DB_PORT}/{DB_NAME}"

async def apply_migration():
    """Apply the status effects table migration."""
    engine = create_async_engine(DATABASE_URL)
    
    print("Applying status effects table migration...")
    
    try:
        async with engine.begin() as conn:
            # Read and execute the SQL file
            with open('migrations/add_status_effects_table.sql', 'r') as f:
                sql = f.read()
            
            await conn.execute(text(sql))
            print("✅ Successfully created player_status_effects table")
            
    except Exception as e:
        print(f"❌ Migration failed: {e}")
        raise
    finally:
        await engine.dispose()

if __name__ == "__main__":
    asyncio.run(apply_migration())
