Skip to content

A RESTful API developed using Python and Django, designed for managing restaurant menus. The API allows users to create, read, update, and delete menu items, categories, and special offers.

Notifications You must be signed in to change notification settings

kaschenkkko/RestaurantMenuAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Restaurant Menu API

Документация API:

Restaurant Menu - API redoc

Запуск проекта через докер:

  • Клонируйте репозиторий и перейдите в него.
  • Перейдите в папку infra. Создайте файл .env, с переменными окружения.
    DB_HOST=db
    DB_PORT=5432
    DB_NAME=postgres
    POSTGRES_USER=postgres
    POSTGRES_PASSWORD=postgres
    
    # data db for tests
    DB_HOST_TEST=db_for_tests
    
  • Находясь в папке infra запустите docker-compose:
    ~$ docker-compose up -d --build
    
  • В контейнере backend выполните миграции:
    ~$ docker-compose exec backend alembic upgrade head
    
  • Для запуска тестов выполните команду:
    ~$ docker-compose up tests
    

Документация к API будет доступна по url-адресу 127.0.0.1:8000/redoc

Техническое задание проекта:

Написать проект на FastAPI с использованием PostgreSQL в качестве БД. В проекте следует реализовать REST API по работе с меню ресторана, все CRUD операции.

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

Зависимости:

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

Условия первого задания:

  • Блюдо не может быть привязано напрямую к меню, минуя подменю.
  • Блюдо не может находиться в 2-х подменю одновременно.
  • Подменю не может находиться в 2-х меню одновременно.
  • Если удалить меню, должны удалиться все подменю и блюда этого меню.
  • Если удалить подменю, должны удалиться все блюда этого подменю.
  • Цены блюд выводить с округлением до 2 знаков после запятой.
  • Во время выдачи списка меню, для каждого меню добавлять кол-во подменю и блюд в этом меню.
  • Во время выдачи списка подменю, для каждого подменю добавлять кол-во блюд в этом подменю.

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

  • Написать CRUD тесты для ранее разработанного API с помощью библиотеки pytest.
  • Подготовить отдельный контейнер для запуска тестов.
  • Реализовать вывод количества подменю и количества блюд для меню через один ORM запрос.
  • Реализовать тестовый сценарий «Проверка количества блюд и количества подменю в меню» из тестов Postman с помощью pytest.

About

A RESTful API developed using Python and Django, designed for managing restaurant menus. The API allows users to create, read, update, and delete menu items, categories, and special offers.

Topics

Resources

Stars

Watchers

Forks