domovoy_bot/database/migrate_add_events.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

68 lines
2.8 KiB
Python
Raw 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.

"""
Миграция v1.14: создать таблицы events и event_participants для календаря событий
"""
import sqlite3
import asyncio
DB_PATH = 'database/domovoy.db'
async def migrate():
"""Создать таблицы events и event_participants"""
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
# Проверяем таблицу events
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='events'")
if not cursor.fetchone():
print(" Создаём таблицу events...")
cursor.execute("""
CREATE TABLE events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT,
event_type TEXT DEFAULT 'general',
event_date TIMESTAMP NOT NULL,
location TEXT,
created_by BIGINT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
is_active BOOLEAN DEFAULT 1,
reminder_sent BOOLEAN DEFAULT 0,
FOREIGN KEY (created_by) REFERENCES users(user_id)
)
""")
cursor.execute("CREATE INDEX ix_events_date ON events(event_date)")
cursor.execute("CREATE INDEX ix_events_type ON events(event_type)")
cursor.execute("CREATE INDEX ix_events_active ON events(is_active)")
print("✅ Таблица events создана")
else:
print(" Таблица events уже существует")
# Проверяем таблицу event_participants
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='event_participants'")
if not cursor.fetchone():
print(" Создаём таблицу event_participants...")
cursor.execute("""
CREATE TABLE event_participants (
id INTEGER PRIMARY KEY AUTOINCREMENT,
event_id INTEGER NOT NULL,
user_id BIGINT NOT NULL,
joined_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (event_id) REFERENCES events(id),
FOREIGN KEY (user_id) REFERENCES users(user_id)
)
""")
cursor.execute("CREATE INDEX ix_event_participants_event ON event_participants(event_id)")
cursor.execute("CREATE INDEX ix_event_participants_user ON event_participants(user_id)")
cursor.execute("CREATE UNIQUE INDEX ix_event_participants_unique ON event_participants(event_id, user_id)")
print("✅ Таблица event_participants создана")
else:
print(" Таблица event_participants уже существует")
conn.commit()
conn.close()
print("✅ Миграция v1.14 завершена!")
if __name__ == '__main__':
asyncio.run(migrate())