""" Миграция v1.2: создать таблицу spam_warnings для предупреждений о спаме """ import sqlite3 import asyncio DB_PATH = 'database/domovoy.db' async def migrate(): """Создать таблицу spam_warnings""" conn = sqlite3.connect(DB_PATH) cursor = conn.cursor() # Проверяем, есть ли уже таблица spam_warnings cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='spam_warnings'") existing = cursor.fetchone() if existing: print("ℹ️ Таблица spam_warnings уже существует") else: print("➕ Создаём таблицу spam_warnings...") cursor.execute(""" CREATE TABLE spam_warnings ( warning_id INTEGER PRIMARY KEY AUTOINCREMENT, user_id BIGINT NOT NULL, message_text TEXT, reason TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, is_active BOOLEAN DEFAULT 1, FOREIGN KEY (user_id) REFERENCES users(user_id) ) """) # Создаём индексы cursor.execute("CREATE INDEX ix_spam_warnings_user ON spam_warnings(user_id)") cursor.execute("CREATE INDEX ix_spam_warnings_active ON spam_warnings(is_active)") print("✅ Таблица spam_warnings создана") print("✅ Индексы созданы") # Проверяем есть ли поле spam_warning_count в users cursor.execute("PRAGMA table_info(users)") columns = [col[1] for col in cursor.fetchall()] if 'spam_warning_count' not in columns: print("➕ Добавляем поле spam_warning_count...") cursor.execute("ALTER TABLE users ADD COLUMN spam_warning_count INTEGER DEFAULT 0") print("✅ Поле spam_warning_count добавлено") else: print("ℹ️ Поле spam_warning_count уже существует") conn.commit() conn.close() print("✅ Миграция v1.2 завершена!") if __name__ == '__main__': asyncio.run(migrate())