Задание стажировки по реализации REST API по работе с меню ресторана.
3.* Реализовать вывод количества подменю и блюд для Меню через один (сложный) ORM запрос.
Данный запрос выполнен в файле menu_repo.py, в функции get_complex_query
Тест на эндпоинт получения количества подменю и блюд в test_dish_sub_in_menu.py, в test_menu_complex_data
3.Добавить эндпоинт (GET) для вывода всех меню со всеми связанными подменю и со всеми связанными блюдами.
Данный запрос выполнен в файле menu_repo.py, в функции get_all_menus
- *Обновление меню из excel раз в 15 сек. Выполнен в файле celery.py
- **Блюда по акции. Размер скидки (%) указывается в столбце G файла Menu.xlsx Выполнен в файле celery.py
- Создайте файл
.env.
touch .env- Заполните файл
.envпо примеру из env_example
- Если не установлен
poetry- установите командой:
pip install poetry- Установите зависимости:
poetry install- Если не установлен
poetry- установите командой:
pip install poetry- Если отсутствует make, установите командой:
sudo apt-get -y install make- Установка завистимостей командой:
make install- Выполните команду по запуску приложения:
poetry run uvicorn app.main:app --reload- Или же выполните запуск приложения командой make:
make run- Просмотр api доступно по ссылке
-
dockerиdocker-composeдолжны быть установлены -
Для запуска приложения выполните команду:
docker-compose up --build dishes-app celery-beat- Для запуска тестов в выполните команду:
docker-compose up --build dishes-app-test-
Даны 3 сущности: Меню, Подменю, Блюдо.
-
У меню есть подменю, которые к ней привязаны.
-
У подменю есть блюда.
-
Блюдо не может быть привязано напрямую к меню, минуя подменю.
-
Блюдо не может находиться в 2-х подменю одновременно.
-
Подменю не может находиться в 2-х меню одновременно.
-
Если удалить меню, должны удалиться все подменю и блюда этого меню.
-
Если удалить подменю, должны удалиться все блюда этого подменю.
-
Цены блюд выводить с округлением до 2 знаков после запятой.
-
Во время выдачи списка меню, для каждого меню добавлять кол-во подменю и блюд в этом меню.
-
Во время выдачи списка подменю, для каждого подменю добавлять кол-во блюд в этом подменю.
-
Во время запуска тестового сценария БД должна быть пуста.