"""
Миграция v1.3: создать таблицу message_rates для анти-спама лимитов
"""
import sqlite3
import asyncio

DB_PATH = 'database/domovoy.db'


async def migrate():
    """Создать таблицу message_rates и добавить поля в users"""
    conn = sqlite3.connect(DB_PATH)
    cursor = conn.cursor()

    # Проверяем, есть ли уже таблица message_rates
    cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='message_rates'")
    existing = cursor.fetchone()

    if existing:
        print("ℹ️ Таблица message_rates уже существует")
    else:
        print("➕ Создаём таблицу message_rates...")
        
        cursor.execute("""
            CREATE TABLE message_rates (
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                user_id BIGINT NOT NULL,
                timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                FOREIGN KEY (user_id) REFERENCES users(user_id)
            )
        """)
        
        # Создаём индексы
        cursor.execute("CREATE INDEX ix_message_rates_user ON message_rates(user_id)")
        cursor.execute("CREATE INDEX ix_message_rates_time ON message_rates(timestamp)")
        
        print("✅ Таблица message_rates создана")
        print("✅ Индексы созданы")

    # Проверяем есть ли поля в users
    cursor.execute("PRAGMA table_info(users)")
    columns = [col[1] for col in cursor.fetchall()]

    if 'is_muted' not in columns:
        print("➕ Добавляем поле is_muted...")
        cursor.execute("ALTER TABLE users ADD COLUMN is_muted BOOLEAN DEFAULT 0")
        print("✅ Поле is_muted добавлено")
    else:
        print("ℹ️ Поле is_muted уже существует")

    if 'mute_until' not in columns:
        print("➕ Добавляем поле mute_until...")
        cursor.execute("ALTER TABLE users ADD COLUMN mute_until TIMESTAMP")
        print("✅ Поле mute_until добавлено")
    else:
        print("ℹ️ Поле mute_until уже существует")

    if 'rate_limit_warnings' not in columns:
        print("➕ Добавляем поле rate_limit_warnings...")
        cursor.execute("ALTER TABLE users ADD COLUMN rate_limit_warnings INTEGER DEFAULT 0")
        print("✅ Поле rate_limit_warnings добавлено")
    else:
        print("ℹ️ Поле rate_limit_warnings уже существует")

    conn.commit()
    conn.close()
    print("✅ Миграция v1.3 завершена!")


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