# fastfood
Fastapi веб приложение реализующее api для общепита.
## Описание
Данный проект, это результат выполнения практических домашних заданий интенсива от YLAB Development. Проект реализован на фреймворке fastapi, с использованием sqlalchemy. В качестве базы данных используется postgresql.
## Техническое задание
### Спринт 3 - Паттерны и принципы разработки
1.Вынести бизнес логику и запросы в БД в отдельные слои приложения.
2.Добавить кэширование запросов к API с использованием Redis. Не забыть про инвалидацию кэша.
3.Добавить pre-commit хуки в проект. Файл yaml будет прикреплен к ДЗ.
4.Покрыть проект type hints (тайпхинтами)
5.* Описать ручки API в соответствий c OpenAPI
6.** Реализовать в тестах аналог Django reverse() для FastAPI
Требования:
●Код должен проходить все линтеры.
●Код должен соответствовать принципам SOLID, DRY, KISS.
●Проект должен запускаться по одной команде (докер).
●Проект должен проходить все Postman тесты (коллекция с Вебинара №1).
●Тесты написанные вами после Вебинара №2, должны быть актуальны, запускать и успешно проходить
Дополнительно:
Контейнеры с проектом и с тестами запускаются разными командами.
## Зависимости
- docker
- docker-compose
## Установка
Клонируйте репозиторий
> `$ git clone https://git.pi3c.ru/pi3c/fastfood.git`
Перейдите в каталог
> `$ cd fastfood`
Запуск/остановка образов:
- Запуск FAstAPI приложения
> `$ docker-compose -f compose_app.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 лицензией](https://mit-license.org/).