Skip to content

MartiAndrew/store

Repository files navigation

📚 ДОКУМЕНТАЦИЯ

Backend проекта Store


Добавление товара в заказ


🔗 API сервиса:

  • ✏️ Реализация метода:

Добавление товара в заказ:

POST /api/store/public/orders/{order_id}/items

В теле запроса передаются параметры:

  • product_id - идентификатор товара (обязательный параметр)

  • quantity - количество товара (обязательный параметр)

  • order_id - идентификатор заказа (в пути запроса передаётся id заказа)

  • 📚 Описание метода:

    Метод публичный. В идеале требует авторизации пользователя (должна проходить проверка). Реализует добавление товара в заказ. Если товар уже есть в заказе, то увеличивает количество. При этом мы проверяем наличие товара. И выбрасываем ошибку, если товара нет в наличии. Так же проверяется целостность базы данных.(Если заказ не найден, то выбрасывается ошибка). (В реальных условиях проверка целостности не нужна, так как и товар и заказ уже будут в наличии).

пример ответа:

{
"order_id": 1,
"product_id": 1,
"order_quantity": 1
}

🚀 Запуск приложения через Docker:

docker-compose -f deploy/docker-compose.yml --project-directory . up

🚀 Локальный запуск приложения:

Добавляем в .env

STORE_SERVICEDB_HOST=127.0.0.1
STORE_SERVICEDB_PORT=5432
STORE_SERVICEDB_USER=store
STORE_SERVICEDB_PASSWORD=store
STORE_SERVICEDB_BASE_NAME=store
python store/web/main.py
./entrypoint.sh start_app

📈 Запуск миграций:

создание миграций:

python common/service_db/migrator.py create {name}

upgrade миграций:

python common/service_db/migrator.py upgrade

downgrade миграций:

python common/service_db/migrator.py downgrade

Проверка ошибок:

1. 🆘 Help для entrypoint (просмотр команд для тестирования)

./entrypoint.sh help

Тестирование:

  Проведено в ручном режиме через Swagger UI и Postman.
Предварительно в базу данных через DBeaver были добавлены сущности товара, клиента, заказа и категорий.
С помощью задействования ручки `/api/store/public/orders/{order_id}/items` можно было проверить добавление товара 
в таблицу order_item а также инкрементирование его количества если товар уже был в заказе.
В реальных условиях необходимо написание интеграционных тестов c помощью pytest. (Написание тестовой базы, фабрик,
моделей, и методов для обработки запросов и работы с фабриками, а также конфтестов и тестов к ним.)
Примеры скринов тестирования приведены в документации к заданию.

About

FastAPI service with the method of adding goods to order

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages