Go to file
Сергей Ванюшкин 8189aaedd4 fix: Поправил TypeHints и убраз неиспользуемые сущности 2024-02-14 15:34:24 +03:00
admin маленькие правки 2024-02-13 13:09:09 +03:00
bg_tasks fix: Поправил TypeHints и убраз неиспользуемые сущности 2024-02-14 15:34:24 +03:00
fastfood fix: Поправил TypeHints и убраз неиспользуемые сущности 2024-02-14 15:34:24 +03:00
postman_scripts add .pre-commit-config.yaml Поправил проблемы 2024-02-03 01:08:04 +03:00
tests fix 2024-02-12 23:09:01 +03:00
.env слияние веток 2024-02-12 23:52:21 +03:00
.gitignore add .pre-commit-config.yaml Поправил проблемы 2024-02-03 01:08:04 +03:00
.pre-commit-config.yaml add .pre-commit-config.yaml Поправил проблемы 2024-02-03 01:08:04 +03:00
Dockerfile upd: Контейнеры для celery & rabbitmq 2024-02-12 23:09:01 +03:00
README.md Readme 2024-02-13 02:44:24 +03:00
compose_app.yml fix 2024-02-12 23:09:01 +03:00
compose_google.yml google синхронизация 2024-02-12 23:09:01 +03:00
compose_test.yml fix: Поправил TypeHints и убраз неиспользуемые сущности 2024-02-14 15:34:24 +03:00
manage.py fix 2024-02-12 23:09:01 +03:00
openapi.json upd: Добавил роут summary с выводом вмего меню со вложением 2024-02-12 23:09:01 +03:00
poetry.lock upd: Добавил bg_task xlsx>>DBase 2024-02-12 23:09:01 +03:00
pyproject.toml upd: Добавил bg_task xlsx>>DBase 2024-02-12 23:09:01 +03:00

README.md

fastfood

Fastapi веб приложение реализующее api для общепита.

Описание

Данный проект, это результат выполнения практических домашних заданий интенсива от YLAB Development. Проект реализован на фреймворке fastapi, с использованием sqlalchemy. В качестве базы данных используется postgresql.

Техническое задание

Спринт 4 - Многопроцессорность, асинхронность

В этом домашнем задании необходимо: 1.Переписать текущее FastAPI приложение на асинхронное выполнение 2.Добавить в проект фоновую задачу с помощью Celery + RabbitMQ. 3.Добавить эндпоинт (GET) для вывода всех меню со всеми связанными подменю и со всеми связанными блюдами. 4.Реализовать инвалидация кэша в background task (встроено в FastAPI) 5.* Обновление меню из google sheets раз в 15 сек. 6.** Блюда по акции. Размер скидки (%) указывается в столбце G файла Menu.xlsx

Фоновая задача: синхронизация Excel документа и БД. В проекте создаем папку admin. В эту папку кладем файл Menu.xlsx (будет прикреплен к ДЗ). Не забываем запушить в гит. При внесении изменений в файл все изменения должны отображаться в БД. Периодичность обновления 15 сек. Удалять БД при каждом обновлении нельзя.

Требования: ●Данные меню, подменю, блюд для нового эндпоинта должны доставаться одним ORM-запросом в БД (использовать подзапросы и агрегирующие функций SQL). ●Проект должен запускаться одной командой ●Проект должен соответствовать требованиям всех предыдущих вебинаров. (Не забыть добавить тесты для нового API эндпоинта)

Выполненные доп задания со *

Спринт 2 3.* Реализовать вывод количества подменю и блюд для Меню через один (сложный) ORM запрос. ./fastfood/repository/menu.py Метод get_menu_item

4.** Реализовать тестовый сценарий «Проверка кол-ва блюд и подменю в меню» из Postman с помощью pytest
    `./tests/test_postman.py`

Спринт 3 5.* Описать ручки API в соответствий c OpenAPI './openapi.json'

6.** Реализовать в тестах аналог Django reverse() для FastAPI
    './tests/urls.py'

Спринт 4 5.* Обновление меню из google sheets раз в 15 сек. ./bg_tasks/ Реализовано чтение как локальной, так и удаленной таблицы. В зависимости какой compose поднять, тот и будет использоваться

6.** Блюда по акции. Размер скидки (%) указывается в столбце G файла Menu.xlsx
    `./fastfood/service/dish.py`, метод _get_discont, подменяет сумму в выдаче,
    скидка хранится в REDIS под ключами вида DISCONT:{UUID блюда}

Зависимости

  • docker
  • docker-compose

Установка

Клонируйте репозиторий

$ git clone https://git.pi3c.ru/pi3c/fastfood.git

Перейдите в каталог

$ cd fastfood

Запуск/остановка образов:

  • Запуск FAstAPI приложения c локальным файлом для фоновой задачи

$ docker-compose -f compose_app.yml up

  • Запуск FAstAPI приложения c Google Sheets для фоновой задачи

$ docker-compose -f compose_google.yml up (ЧИТАЙТЕ СООБЩЕНИЕ В ЧАТЕ)

После успешного запуска образов документация по API будет доступна по адресу http://localhost:8000

По завершении работы остановите контейнеры

$ docker-compose -f compose_app.yml down

  • Запуск тестов

$ docker-compose -f compose_test.yml up

По завершении работы остановите контейнеры

$ docker-compose -f compose_test.yml down

TODO

  • Написать тесты для кривых данных
  • Много чего другого :)

Авторы

Лицензия

Распространяется под MIT лицензией.