"""
Миграция: добавить поля rating и level в таблицу users
"""
import sqlite3
import asyncio
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy import text

DB_PATH = 'database/domovoy.db'
DB_URL = f'sqlite+aiosqlite:///{DB_PATH}'


async def migrate():
    """Добавить поля rating и level"""
    conn = sqlite3.connect(DB_PATH)
    cursor = conn.cursor()
    
    # Проверяем, есть ли уже поле rating
    cursor.execute("PRAGMA table_info(users)")
    columns = [col[1] for col in cursor.fetchall()]
    
    if 'rating' not in columns:
        print("➕ Добавляем поле rating...")
        cursor.execute("ALTER TABLE users ADD COLUMN rating INTEGER DEFAULT 0")
        print("✅ Поле rating добавлено")
    else:
        print("ℹ️ Поле rating уже существует")
    
    if 'level' not in columns:
        print("➕ Добавляем поле level...")
        cursor.execute("ALTER TABLE users ADD COLUMN level TEXT DEFAULT 'Новичок'")
        print("✅ Поле level добавлено")
    else:
        print("ℹ️ Поле level уже существует")
    
    # Обновляем уровни у существующих пользователей
    print("🔄 Обновляем уровни пользователей...")
    cursor.execute("""
        UPDATE users 
        SET level = CASE
            WHEN rating >= 1000 THEN 'Лидер'
            WHEN rating >= 500 THEN 'Активист'
            WHEN rating >= 100 THEN 'Сосед'
            ELSE 'Новичок'
        END
        WHERE level IS NULL OR level = 'Новичок'
    """)
    updated = cursor.rowcount
    print(f"✅ Обновлено {updated} записей")
    
    conn.commit()
    conn.close()
    print("✅ Миграция завершена!")


if __name__ == '__main__':
    asyncio.run(migrate())
