Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save StanisLove/e4887d38fafde3d383664127f49c3b83 to your computer and use it in GitHub Desktop.
Save StanisLove/e4887d38fafde3d383664127f49c3b83 to your computer and use it in GitHub Desktop.
Задачка на использование GenServer
# Онлайн магазин
Необходимо создать 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