Условие
Реализовать метод gRPC-сервера, который:
- Добавляет товар в корзину
- Оформляет корзину
В оформленные корзины (basket.Status = "ordered") изменения вносить нельзя.
При изменении состава корзины надо пересчитывать:
- basket.Total = sum(count * price)
Все элементы в корзине должны быть уникальны по ключу ProductID.
Для оформления корзины необходимо:
- Сменить ее статус на ordered
- Сообщить возможным потребителям с помощью сообщений в брокер.
func (bs *BasketServer) AddItemAndOrder(ctx context.Context, req *AddItemRequest) (*EmptyResponse, error) {
basket, err := bs.repo.Load(ctx, req.UserID)
if err != nil {
return nil, err
}
// place your code
err = bs.repo.Save(ctx,…