Skip to content

Rikoze777/fastapi_dishes_endpoints

Repository files navigation

fastapi_dishes_endpoints

Задание стажировки по реализации REST API по работе с меню ресторана.

Задание 2 недели по сложному ORM запросу.

3.* Реализовать вывод количества подменю и блюд для Меню через один (сложный) ORM запрос.

Данный запрос выполнен в файле menu_repo.py, в функции get_complex_query

Тест на эндпоинт получения количества подменю и блюд в test_dish_sub_in_menu.py, в test_menu_complex_data

Задание 4 недели по сложному ORM запросу.

3.Добавить эндпоинт (GET) для вывода всех меню со всеми связанными подменю и со всеми связанными блюдами. Данный запрос выполнен в файле menu_repo.py, в функции get_all_menus

  1. *Обновление меню из excel раз в 15 сек. Выполнен в файле celery.py
  2. **Блюда по акции. Размер скидки (%) указывается в столбце G файла Menu.xlsx Выполнен в файле celery.py

Настройки

  • Создайте файл .env.
touch .env
  • Заполните файл .env по примеру из env_example

Установка

  • Если не установлен poetry - установите командой:
pip install poetry
  • Установите зависимости:
poetry install

Установка с make:

  • Если не установлен poetry - установите командой:
pip install poetry
  • Если отсутствует make, установите командой:
sudo apt-get -y install make
  • Установка завистимостей командой:
make install

Запуск

  • Выполните команду по запуску приложения:
poetry run uvicorn app.main:app --reload
  • Или же выполните запуск приложения командой make:
make run

Запуск c Docker

  • docker и docker-compose должны быть установлены

  • Для запуска приложения выполните команду:

docker-compose up --build dishes-app celery-beat
  • Для запуска тестов в выполните команду:
docker-compose up --build dishes-app-test

Зависимости задания:

  • Даны 3 сущности: Меню, Подменю, Блюдо.

  • У меню есть подменю, которые к ней привязаны.

  • У подменю есть блюда.

Условия задания:

  • Блюдо не может быть привязано напрямую к меню, минуя подменю.

  • Блюдо не может находиться в 2-х подменю одновременно.

  • Подменю не может находиться в 2-х меню одновременно.

  • Если удалить меню, должны удалиться все подменю и блюда этого меню.

  • Если удалить подменю, должны удалиться все блюда этого подменю.

  • Цены блюд выводить с округлением до 2 знаков после запятой.

  • Во время выдачи списка меню, для каждого меню добавлять кол-во подменю и блюд в этом меню.

  • Во время выдачи списка подменю, для каждого подменю добавлять кол-во блюд в этом подменю.

  • Во время запуска тестового сценария БД должна быть пуста.

About

Задание реализации REST API по работе с меню ресторана

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages