""" Инструкции по обновлению схемы БД при изменении моделей ВАЖНО: Этот проект использует SQLAlchemy ORM, поэтому изменения моделей требуют обновления БД. Используйте один из методов ниже. """ import asyncio from app.database import engine from app.models import Base async def drop_all_tables(): """ ⚠️ ОПАСНО: Удаляет все таблицы из БД Используйте только для разработки! """ async with engine.begin() as conn: await conn.run_sync(Base.metadata.drop_all) print("❌ Все таблицы удалены") async def create_all_tables(): """ Создает все таблицы на основе моделей Безопасно использовать - не удаляет существующие таблицы """ async with engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) print("✅ Все таблицы созданы/обновлены") async def reset_db(): """ Полный сброс БД: удаляет все и создает заново ⚠️ Используйте только если вам не нужны старые данные """ print("⚠️ Сброс БД...") await drop_all_tables() await create_all_tables() print("✅ БД полностью восстановлена") async def main(): """Интерактивное меню""" print("\n" + "=" * 60) print("УПРАВЛЕНИЕ БД") print("=" * 60) print("\n1. Создать/обновить таблицы") print("2. Полный сброс БД (удалить все данные)") print("3. Выход") choice = input("\nВыберите действие (1-3): ").strip() if choice == "1": await create_all_tables() elif choice == "2": confirm = input("\n⚠️ Вы уверены? Все данные будут удалены (yes/no): ") if confirm.lower() == "yes": await reset_db() else: print("Отменено") elif choice == "3": print("До свидания!") else: print("❌ Неверный выбор") if __name__ == "__main__": asyncio.run(main())