import asyncio
import asyncpg
import sys

async def apply_migrations():
    """Apply conversation database migrations"""
    
    # Connect to database
    conn = await asyncpg.connect(
        host='localhost',
        port=5433,  # Default from backend
        database='archie_dev',
        user='archie_dev',
        password='archie_dev_password'
    )
    
    try:
        print("✅ Connected to database")
        
        # Read and execute migration 010
        print("\n📋 Applying migration 010_conversation_participants.sql...")
        with open('/mnt/data-disk1/archie-main-integration/infrastructure/database/manual-migrations/010_conversation_participants.sql') as f:
            migration_010 = f.read()
        
        await conn.execute(migration_010)
        print("✅ Migration 010 applied successfully")
        
        # Read and execute migration 011
        print("\n📋 Applying migration 011_conversations_enhancement.sql...")
        with open('/mnt/data-disk1/archie-main-integration/infrastructure/database/manual-migrations/011_conversations_enhancement.sql') as f:
            migration_011 = f.read()
        
        await conn.execute(migration_011)
        print("✅ Migration 011 applied successfully")
        
        # Verify conversations table structure
        print("\n🔍 Verifying conversations table structure...")
        result = await conn.fetch("""
            SELECT column_name, data_type 
            FROM information_schema.columns 
            WHERE table_name = 'conversations'
            ORDER BY ordinal_position
        """)
        
        print("\nConversations table columns:")
        for row in result:
            print(f"  - {row['column_name']}: {row['data_type']}")
        
        print("\n✅ All migrations applied successfully!")
        
    except Exception as e:
        print(f"❌ Error: {e}")
        import traceback
        traceback.print_exc()
        sys.exit(1)
    finally:
        await conn.close()

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