Skip to content

w7a8n1y4a/pepeunit_backend

Repository files navigation

Pepeunit Backend

Внешние зависимости

  1. Telegram Bot и его Api Key
  2. Чистая база данных в Postgresql
  3. Чистая база данных в Clickhouse
  4. Развёрнутый EMQX MQTT Broker
  5. Redis

Основные этапы развёртывания

  1. Установите пакеты при помощи команды:
    poetry install
  2. Войдите в окружение при помощи команды:
    poetry shell
  3. Настройте .env файл по образцу .env_example
  4. Выполните миграцию в БД, требуется только при первом запуске и добавлении новых миграций:
    alembic upgrade head
  5. Запустите Backend приложение командой:
    uvicorn app.main:app --host 0.0.0.0 --port 5000

Что произойдёт в момент запуска приложения ?

  1. Будут выполнены миграции Clickhouse в автоматическом режиме. Миграции Postgres запускаются вне кода приложения
  2. Проверка cоединения с EMQX MQTT Broker и его настройка
  3. Будет настроен webhook или pooling для Telegram Bot
  4. Fastapi-mqtt установит соединение с EMQX MQTT Broker
  5. Бэкенд подпишется на топик example.com/+/+/+/pepeunit, авторизация при этом произойдёт через redis
  6. Запуск веб сервера

Как работает интеграция с Telegram Bot

Есть два режима работы: через webhook, и через pooling - выбор осуществляется на основании BACKEND_DOMAIN.

  • если введён ip адрес, будет использовать pooling
  • если введён домен, будет использоваться webhook

Как найти playground`s Swagger UI и GraphQL

  1. Введите в связанном Телеграм боте команду /info - она доступна без верификации
  2. https://BACKEND_DOMAIN/BACKEND_APP_PREFIX/docs - Swagger UI
  3. https://BACKEND_DOMAIN/BACKEND_APP_PREFIX/graphql - GraphQL

Поддержание формата кода

  1. Установите .pre-commit-config.yaml на основе .pre-commit-config.example.yaml
  2. Теперь при каждом коммите у вас будет происходить проверка через black и isort
  3. В случае, если нужно запустить вручную
    pre-commit run --all-files

Миграции базы данных

  1. Создание новой миграции:
    alembic revision -m 'best_revision_name'
  2. Применение новой миграции:
    alembic upgrade head

Модульное тестирование

Запустить модульное тестирование можно командой:

pytest app -v

Интеграционное тестирование

Запустить интеграционное тестирование можно командой ниже. Подробнее о настройке теста на странице документации

pytest tests -v

Нагрузочное тестирование

  1. Установка дополнительных пакетов:
    poetry install --with load
  2. Подробнее о настройке тестов на странице документации
  3. Запуск MQTT теста:
    python -m tests.load.load_test_mqtt
  4. Запуск GQL и REST теста
    locust -f tests/load/locustfile.py

Packages

No packages published

Languages