# Создайте файл database/migrate.py

"""
Миграция: добавление полей matched_word и match_type в SpamLog
"""
import asyncio
from sqlalchemy import text
from .manager import get_manager


async def migrate():
    """Добавляет поля matched_word и match_type если их нет"""
    manager = get_manager()
    await manager.init()

    async with manager.session_maker() as session:
        try:
            # Проверяем наличие колонок
            result = await session.execute(
                text("PRAGMA table_info(spam_logs)")
            )
            columns = [row[1] for row in result.fetchall()]

            if 'matched_word' not in columns:
                print("Добавляем колонку matched_word...")
                await session.execute(
                    text("ALTER TABLE spam_logs ADD COLUMN matched_word VARCHAR(255)")
                )
                await session.commit()
                print("✅ Колонка matched_word добавлена")

            if 'match_type' not in columns:
                print("Добавляем колонку match_type...")
                await session.execute(
                    text("ALTER TABLE spam_logs ADD COLUMN match_type VARCHAR(50)")
                )
                await session.commit()
                print("✅ Колонка match_type добавлена")

            print("✅ Миграция завершена успешно!")

        except Exception as e:
            print(f"❌ Ошибка миграции: {e}")
            await session.rollback()

        finally:
            await manager.close()


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