""" Миграция: добавить поля 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())