Skip to content

ArinLin/LaModa_testTask

Repository files navigation

Тестовое задание для LaModa

Задание

API для работы с товарами на складе

Необходимо спроектировать и реализовать API методы для работы с товарами на одном складе. Учесть, что вызов API может быть одновременно из разных систем и они могут работать с одинаковыми товарами. Методы API можно расширять доп. параметрами на своё усмотрение.

Спроектировать и реализовать БД для хранения следующих сущностей

  • Склад

• название

• признак доступности

  • Товар

• название

• размер

• уникальный код

• количество

Реализовать методы API:

  • резервирование товара на складе для доставки

• на вход принимает:

• массив уникальных кодов товара

  • освобождение резерва товаров

• на вход принимает

• массив уникальных кодов товара

  • получение кол-ва оставшихся товаров на складе

• на вход принимает:

• идентификатор склада

Будет плюсом

✅ Реализация логики работы с товарами, которые одновременно могут находиться на нескольких складах

Реализация

Конфигурация сервиса

Для конфигурирования сервиса ипользуется файл, лежащий в deploy/.env.

  • SERVER_HOST // адрес сервера
  • SERVER_PORT // порт сервера
  • DB_HOST // адрес БД с портом
  • DB_USER // имя пользователя для подключения к БД
  • DB_PASS // пароль пользователя для подключения к БД
  • DB_NAME // имя БД
  • DB_DISABLE_TLS // флаг использования TLS для подключения к БД
  • LOG_LEVEL // уровень логгирования
  • GOODS // количество генерируемых товаров
  • STOCKS // количество генерируемых стоков на складах
  • WAREHOUSES // количество генерируемых складов
  • SWAGGER_PORT // порт, на котором запущен SwaggerUI

Запуск сервиса

Для запуска сервиса необходимо ввести команду:

make up

Остановка сервиса

Для остановки сервиса необходимо ввести команду:

make down

Просмотр логов сервиса

Для вывода логов сервиса необходимо ввести команду:

make logs

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

Тестами покрыт слой стора. Для запуска юнит-тестов необходимо ввести команду:

make tests 

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

make coverage 

Дополнительные команды

Для форматирования кода можно использовать команду:

make fmt 

Для генерации swagger-документации можно использовать команду:

make swagger-generate 

Для генерации функции, конфигурирующей всех зависимостей сервера, можно использовать команду:

make wire 

Дополнительная информация

Используемые технологии

Go:

  • urfave/cli, wire, echo
  • sqlx, go-playground/validator
  • testcontainers-go, slog, swaggo

DB:

  • PostgresSQL

Swagger:

  • OpenAPI v2

Deploy:

  • Docker, docker-compose

Swagger

С дефолтным env, после запуска сервиса, появляется доступ к SwaggerUI по адресу: http://localhost:9000/doc/index.html

Postman

Postman-коллекция доступна по ссылке: тык

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages