domovoy_bot/database/migrate_add_rating.py
Admin ba4676b0af v1.0 MVP - Инициализация проекта 🏠
 Регистрация и верификация жильцов
 Рейтинг активности (уровни)
 Детект шпионов (Score 0-100)
 Анти-мат система (3 предупреждения → бан)
 Админ-панель с рассылкой
 Учёт квартир (несколько жильцов)
 Телефоны экстренных служб и мастеров
 Еженедельный экспорт JSON
 Прокси (socks5) для обхода РКН

Бекап: backups/versions/v1.0_mvp_2026-02-26/

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-27 10:54:16 +00:00

57 lines
1.9 KiB
Python
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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