-
-
Save StanisLove/e4887d38fafde3d383664127f49c3b83 to your computer and use it in GitHub Desktop.
Задачка на использование GenServer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Онлайн магазин | |
Необходимо создать API для онлайн магазина. Для покупки необходимо создать корзину, добавить туда товары и затем купить все товары из корзины. API подразумевает возможности просматривать список всех продуктов, список корзин. | |
Ожидается использование GenServer для хранения данных корзин. | |
## Методы API: | |
### 1. create_item | |
**Параметры:** | |
`name` - латиница и цифры | |
`amount` - количество | |
**Ответ:** созданный продукт | |
### 2. list_items | |
**Параметры:** | |
`id` - id корзины, опциональный, если не указан - показывать список всех продуктов | |
**Ответ:** список всех продуктов с актуальным для указанной корзины количеством (или общим количеством) | |
### 3. create_cart | |
**Ответ:** id корзины | |
### 4. add_to_cart | |
**Параметры:** | |
`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}] | |
``` | |
### 5. buy_cart | |
**Параметры:** | |
`id` - id корзины | |
После этого запроса из общего числа товара должны быть вычтены купленные товары. Корзина перестает отображаться в списке `list_carts`. | |
**Ответ:** список купленных товаров (из этой корзины) | |
### 6. delete_cart | |
**Параметры:** | |
`id` - id корзины | |
**Ответ:** id корзины | |
После этого запроса корзина удаляется и не отображается в списке `list_carts`. Все товары из корзины снова должны учитываться в списке `list_items`. | |
### 7. list_carts | |
**Ответ:** список действующих корзин со списком товаров и количеством |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment