/catalog

Test task for applying

Primary LanguageJava

Тестовое задание "Каталог Товаров"

Задача
    Каталог состоит из разделов и продуктов.
    Раздел может содержать подразделы. Товар может находиться только в одном разделе.
    У приложения должно быть rest api для управления данными каталога (CRUD)

    Для работы с данными использовать JPA
    При проектировании api учитывать что количество разделов на одном уровне не ограничено,
    количество уровней вложенности не ограничено, количество товаров в разделе не ограничено.

Модель

Все элементы каталога имеют одну модель данных и следующие поля:

Поле Описание
uuid Уникальный идентификатор элемента.
type Тип элемента. Может быть либо "CATEGORY"(раздел каталога), либо "ITEM"(товар).
name Название элемента.
description Дополнительная информация об элементе.
parentItem Раздел, в который входит элемент.
referenceItems Список дочерних элементо.
properties Дополнительные свойства элемента(напр. название на других языках).

API v1

Создание элемента

POST http://localhost:8080/api/v1/catalog/create

{
    "type": "CATEGORY",
    "name": "ovoshchi_frukty_zelen",
    "properties": {
      "label": "Овощи, Фрукты и Зелень"
    },
    "referenceItems": [
        {
            "type": "CATEGORY",
            "name": "ovoshchi",
            "properties": {
                "label": "Овощи"
            }
        }
    ]
}
Ответ будет примерно следующим
{
         "uuid": "5c5d2ce1-4b1e-4503-871c-193ebaa5368d",
         "type": "CATEGORY",
         "name": "ovoshchi_frukty_zelen",
         "referenceItems": [
             {
                 "uuid": "2ea63bec-62dd-444d-967c-f17b22244680",
                 "type": "CATEGORY",
                 "name": "ovoshchi",
                 "properties": {
                     "label": "Овощи"
                 }
             }
         ],
         "properties": {
             "label": "Овощи, Фрукты и Зелень"
         }
     }

Получение списка всех элементов

GET http://localhost:8080/api/v1/catalog/list

Ответом будет все дерево каталога

Удаление элемента каталога

DELETE http://localhost:8080/api/v1/catalog/delete

{
    "uuid": "eda72ae1-4ece-4ee8-a293-de0cb8363765"
}

В ответ придет сообщение об успешном удалении

Обновление элемента

POST http://localhost:8080/api/v1/catalog/update

 {
        "uuid": "eda72ae1-4ece-4ee8-a293-de0cb8363765",
        "type": "CATEGORY",
        "name": "ovoshchi_frukty_zelen",
        "description": "Раздел со свежими овощами"
}

В ответ придет сообщение об успешном редактировании