# Makefile для телеграм-бота розыгрышей .PHONY: help install setup setup-postgres init-db run test clean # По умолчанию показываем справку help: @echo "🎲 Телеграм-бот для розыгрышей" @echo "================================" @echo "" @echo "Доступные команды:" @echo " make install - Установка зависимостей" @echo " make setup-postgres- Настройка PostgreSQL БД" @echo " make setup - Первоначальная настройка" @echo " make init-db - Инициализация базы данных" @echo " make run - Запуск бота" @echo " make test - Запуск тестов и примеров" @echo " make migration - Создание миграции" @echo " make migrate - Применение миграций" @echo " make sample - Создание тестового розыгрыша" @echo " make stats - Показать статистику" @echo " make demo-admin - Демонстрация админ-панели" @echo " make test-admin - Тестирование улучшений админки" @echo " make clear-db - ⚠️ УДАЛИТЬ ВСЕ ДАННЫЕ из БД" @echo "" @echo "Быстрый старт с PostgreSQL:" @echo " 1. cp .env.example .env" @echo " 2. Отредактируйте .env файл" @echo " 3. make setup-postgres" @echo " 4. make migrate" @echo " 5. make setup" @echo " 6. make run" # Установка зависимостей install: @echo "📦 Установка зависимостей..." python3 -m venv .venv . .venv/bin/activate && pip install -r requirements.txt # Настройка PostgreSQL базы данных setup-postgres: @echo "🐘 Настройка PostgreSQL базы данных..." ./scripts/setup_postgres.sh # Первоначальная настройка setup: install @echo "🔧 Настройка проекта..." @if [ ! -f .env ]; then \ echo "❌ Файл .env не найден! Скопируйте .env.example в .env"; \ exit 1; \ fi . .venv/bin/activate && python -c "from src.utils.utils import setup_admin_users; import asyncio; asyncio.run(setup_admin_users())" @echo "✅ Настройка завершена!" # Инициализация базы данных init-db: @echo "🗄️ Инициализация базы данных..." . .venv/bin/activate && python -c "from src.core.database import init_db; import asyncio; asyncio.run(init_db())" @echo "✅ База данных инициализирована!" # Проверка подключения к базе данных check-db: @echo "🔍 Проверка подключения к базе данных..." . .venv/bin/activate && python -c "from src.core.database import async_session_maker; import asyncio; asyncio.run(async_session_maker().__aenter__())" @echo "✅ Подключение к базе данных работает!" # Запуск бота run: @echo "🚀 Запуск бота..." . .venv/bin/activate && python main.py # Создание миграции migration: @echo "📄 Создание новой миграции..." . .venv/bin/activate && alembic revision --autogenerate -m "$(MSG)" # Применение миграций migrate: @echo "⬆️ Применение миграций..." . .venv/bin/activate && alembic upgrade head # Тесты и примеры test: @echo "🧪 Запуск тестов..." . .venv/bin/activate && python scripts/examples.py # Создание тестового розыгрыша sample: @echo "🎲 Создание тестового розыгрыша..." . .venv/bin/activate && python -c "from src.utils.utils import create_sample_lottery; import asyncio; asyncio.run(create_sample_lottery())" # Статистика stats: @echo "📊 Статистика бота..." . .venv/bin/activate && python -c "from src.utils.utils import show_stats; import asyncio; asyncio.run(show_stats())" # Демонстрация админ-панели demo-admin: @echo "🎪 Демонстрация возможностей админ-панели..." . .venv/bin/activate && python src/display/demo_admin.py # Тестирование улучшений админки test-admin: @echo "🧪 Тестирование новых функций админ-панели..." . .venv/bin/activate && python tests/test_admin_improvements.py # ⚠️ ОПАСНО: Полная очистка базы данных clear-db: @echo "⚠️ ВНИМАНИЕ! Это удалит ВСЕ данные из базы данных!" @echo " - Все пользователи" @echo " - Все розыгрыши" @echo " - Все счета" @echo " - Все участия" @echo " - Всех победителей" @echo "" @read -p "Вы уверены? Введите 'yes' для подтверждения: " confirm; \ if [ "$$confirm" = "yes" ]; then \ echo "🗑️ Очистка базы данных..."; \ . .venv/bin/activate && python scripts/clear_database.py; \ else \ echo "❌ Отменено"; \ fi # Очистка clean: @echo "🧹 Очистка временных файлов..." find . -type f -name "*.pyc" -delete find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true find . -type f -name "*.log" -delete @echo "✅ Очистка завершена!" # Полная переустановка reset: clean @echo "🔄 Полная переустановка..." rm -f *.db *.sqlite *.sqlite3 rm -rf migrations/versions/*.py make setup