Здравствуйте! Это мой результат тестового задания в конкурсе на участие в ШИФТЛАБ-2022. В приложении используется фреймворк Spring Boot, H2 JDBC Driver (только изучаю Hibernate, поэтому, на всякий случай, решил его не использовать).
Также имеются модульные тесты для слоя репозиториев. (остальные методы в приложении получились вырожденными (вызывается один метод из репозитория)).
Инструкция по сборке приложения:
- git clone https://github.com/egusator/shiftlab-test.git
- mvn clean
- mvn package
- cd target
- java -jar shiftlab-test-0.0.1-SNAPSHOT.jar
Инструкция к использованию api:
Базовый URL для всех запросов: localhost:8080/api
- Добавление товаров;
Реализовано с помощью POST-запросов
- /desktop/add-new - добавляет новый десктоп (RequestBody в формате Json, в котором описаны поля: serialNumber - серийный номер (String), price - цена товара (Big Decimal), quantityInStock - количество в наличии (int), manufacturerName - имя производителя (String), formFactor - форм-фактор (1, 2, 3) (Byte)) 1 - десктоп 2 - неттоп 3 - моноблок
- /monitor/add-new - добавляет новый монитор (RequestBody в формате Json, в котором описаны поля: serialNumber - серийный номер (String), price - цена товара (Big Decimal), quantityInStock - количество в наличии (int), manufacturerName - имя производителя (String), diagonal - диагональ монитора (Short))
- /hard-disk/add-new - добавляет новый жесткий диск (RequestBody в формате Json, в котором описаны поля: serialNumber - серийный номер (String), price - цена товара (Big Decimal), quantityInStock - количество в наличии (int), manufacturerName - имя производителя (String), capacity - емкость жесткого диска в Гб (int))
- /laptop/add-new - добавляет новый ноутбук (RequestBody в формате Json, в котором описаны поля: serialNumber - серийный номер (String), price - цена товара (Big Decimal), quantityInStock - количество в наличии (int), manufacturerName - имя производителя (String), size - размер экрана (13,14,15 или 17) (Byte))
- Удаление товаров: POST-запрос: /common/delete - удаляет товар (параметры: int id)
- Редактирование товаров:
Реализовано с помощью POST-запросов
- /common/set-quantity - устанавливает количество товара в наличии (параметры: int id, int quantity)
- /common/increase-quantity - увеличивает количество товара в наличии (параметры: int id, int amount)
- /common/increase-quantity - уменьшает количество товара в наличии (параметры: int id, int amount)
- /common/set-price - устанавливает цену товара (параметры: int id, BigDecimal price)
- /common/set-serial-number - устанавливает серийный номер товара (параметры: int id, String serialNumber)
- Просмотр всех существующих товаров по типу
Реализовано с помощью GET-запросов
- /monitor/get-all - возвращает все мониторы (без параметров)
- /desktop/get-all - возвращает все десктопы (без параметров)
- /hard-disk/get-all - возвращает все жесткие диски (без параметров)
- /monitor/get-all - возвращает все мониторы (без параметров)
- Просмотр товара по идентификатору GET-запрос /common/get-by-id - возвращает произвольный товар (параметры - int id)