#!/usr/bin/env python3 """ Скрипт инициализации базы данных Запускается один раз при первом запуске бота """ import asyncio import sys from pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent sys.path.insert(0, str(BASE_DIR)) from database.db import init_db, AsyncSessionLocal from database.models import User, Service, Announcement from sqlalchemy import select from datetime import datetime async def fill_initial_data(): """Заполнение начальными данными""" async with AsyncSessionLocal() as session: # Проверяем, есть ли уже данные stmt = select(Service) result = await session.execute(stmt) services = list(result.scalars().all()) if services: print('ℹ️ Данные уже есть в БД, пропускаем заполнение') return # Телефоны экстренных служб (заглушки, заменишь на свои) emergency_services = [ {'name': 'Скорая помощь', 'category': 'emergency', 'phone': '103', 'description': 'Экстренная медицинская помощь'}, {'name': 'Пожарная охрана', 'category': 'emergency', 'phone': '101', 'description': 'Пожарная служба'}, {'name': 'Полиция', 'category': 'emergency', 'phone': '102', 'description': 'Экстренная служба полиции'}, {'name': 'Газовая служба', 'category': 'emergency', 'phone': '104', 'description': 'Аварийная газовая служба'}, {'name': 'Единая служба спасения', 'category': 'emergency', 'phone': '112', 'description': 'Работает с мобильного'}, {'name': 'Диспетчер УК', 'category': 'utility', 'phone': '+7 (XXX) XXX-XX-XX', 'description': 'Круглосуточно', 'verified_by_admin': True}, {'name': 'Аварийная водоканал', 'category': 'utility', 'phone': '+7 (XXX) XXX-XX-XX', 'description': 'Протечки, засоры'}, {'name': 'Аварийная электросети', 'category': 'utility', 'phone': '+7 (XXX) XXX-XX-XX', 'description': 'Проблемы с электричеством'}, {'name': 'Участковый', 'category': 'police', 'phone': '+7 (XXX) XXX-XX-XX', 'description': 'Приёмные часы: Вт, Чт 18:00-20:00'}, ] for svc_data in emergency_services: service = Service(**svc_data) session.add(service) # Приветственное объявление announcement = Announcement( title='🏠 Добро пожаловать в чат дома!', text='''Уважаемые жильцы! Этот бот создан для помощи всем жителям нашего дома. 📞 Что он умеет: • Показать телефоны экстренных служб • Вызвать сантехника/электрика • Сообщить о проблемах • Получить юридическую консультацию ❗ Важно: Для полного доступа пройдите верификацию — укажите номер квартиры. С уважением, администрация чата''', category='general', is_pinned=True ) session.add(announcement) await session.commit() print('✅ Начальные данные добавлены') async def main(): print('🔄 Инициализация базы данных...') await init_db() print('✅ Таблицы созданы') print('🔄 Заполнение начальными данными...') await fill_initial_data() print('\n✅ База данных готова к работе!') print('📍 Путь: ./database/domovoy.db') if __name__ == '__main__': asyncio.run(main())