/Ylab_menu

Primary LanguagePython

Ylab_menu

REST API для работы с меню ресторана

Проект представляет собой REST API для работы с меню ресторана, реализованный с использованием FastAPI и PostgreSQL в качестве базы данных. API предоставляет возможность выполнения операций CRUD (создание, чтение, обновление и удаление) для трех сущностей: Меню, Подменю и Блюда.

Установка и настройка

  1. Склонируйте репозиторий с проектом:

  2. Установите зависимости проекта:

    pip install -r requirements.txt

  3. Создайте базу данных PostgreSQL для проекта.

  4. В файле config.py настройте подключение к базе данных, указав хост, порт, имя базы данных, имя пользователя и пароль.

  5. Примените миграции для создания таблиц в базе данных:

    alembic upgrade head

Запуск приложения

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

uvicorn main:app --reload Установите переменные "DB_USER" и "DB_PASSWORD".

Приложение будет доступно по адресу http://localhost:8000.

Использование API

API предоставляет следующие эндпоинты:

Menus API

  • GET /menus/ - получить список меню
  • GET /menus/{menu_id} - получить информацию о конкретном меню
  • POST /menus/ - создать новое меню
  • PUT /menus/{menu_id} - обновить информацию о меню
  • DELETE /menus/{menu_id} - удалить меню

Submenus API

  • GET /menus/{menu_id}/submenus/ - получить список подменю в указанном меню
  • GET /submenus/{submenu_id} - получить информацию о конкретном подменю
  • POST /menus/{menu_id}/submenus/ - создать новое подменю в указанном меню
  • PUT /submenus/{submenu_id} - обновить информацию о подменю
  • DELETE /submenus/{submenu_id} - удалить подменю

Dishes API

  • GET /menus/{menu_id}/submenus/{submenu_id}/dishes/ - получить список блюд в указанном подменю
  • GET /dishes/{dish_id} - получить информацию о конкретном блюде
  • POST /menus/{menu_id}/submenus/{submenu_id}/dishes/ - создать новое блюдо в указанном подменю
  • PUT /dishes/{dish_id} - обновить информацию о блюде
  • DELETE /dishes/{dish_id} - удалить блюдо

Для выполнения операций создания и обновления используется JSON-формат данных.

Проверка API

Для проверки функциональности API предоставляется Postman коллекция с тестовыми запросами. Вы можете импортировать коллекцию в Postman и запустить тесты, чтобы убедиться, что все операции работают корректно.

Замечания

В процессе разработки данного API были учтены следующие условия:

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