Необходимо создать API для онлайн магазина. Для покупки необходимо создать корзину, добавить туда товары и затем купить все товары из корзины. API подразумевает возможности просматривать список всех продуктов, список корзин.
Ожидается использование GenServer для хранения данных корзин.
Параметры:
name
- латиница и цифры
amount
- количество
Ответ: созданный продукт
Параметры:
id
- id корзины, опциональный, если не указан - показывать список всех продуктов
Ответ: список всех продуктов с актуальным для указанной корзины количеством (или общим количеством)
Ответ: id корзины
Параметры:
id
- id корзины
name
- название товара
amount
- количество товара
Ответ: обновленная корзина
После этого запроса из общего числа товара в списке list_items
с id корзины должны быть вычтены добавленные товары. Если товара не осталось - он не должен больше выводиться в списке list_items
.
Например:
1. list_items {id: 1}
=> [{id: 1, name: "item1", amount: 3}]
2. add_to_cart {id: 1, name: "item1", amount: 2}
=> [{id: 1, name: "item1", amount: 2}]
3. list_items {id: 1}
=> [{id: 1, name: "item1", amount: 1}]
Параметры:
id
- id корзины
После этого запроса из общего числа товара должны быть вычтены купленные товары. Корзина перестает отображаться в списке list_carts
.
Ответ: список купленных товаров (из этой корзины)
Параметры:
id
- id корзины
Ответ: id корзины
После этого запроса корзина удаляется и не отображается в списке list_carts
. Все товары из корзины снова должны учитываться в списке list_items
.
Ответ: список действующих корзин со списком товаров и количеством