Необходимо спроектировать и реализовать 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
С дефолтным env, после запуска сервиса, появляется доступ к SwaggerUI по адресу: http://localhost:9000/doc/index.html
Postman-коллекция доступна по ссылке: тык