Skip to content

Instantly share code, notes, and snippets.

@Apelsinka223
Last active December 25, 2020 17:06
Show Gist options
  • Save Apelsinka223/a9e4fadfb47e325e0e8196fb9d79715a to your computer and use it in GitHub Desktop.
Save Apelsinka223/a9e4fadfb47e325e0e8196fb9d79715a 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