52 lines
2.1 KiB
Protocol Buffer
52 lines
2.1 KiB
Protocol Buffer
syntax = "proto3";
|
|
package model;
|
|
|
|
service ShopCart { // Сервис корзины товаров
|
|
rpc Add (AddRequest) returns (Response) {} // Добавление товара в корзину
|
|
rpc Get (GetRequest) returns (Response) {} // Get получение текущего состояния корзины
|
|
rpc Update (UpdateRequest) returns (Response) {} // Обновление товара в корзине
|
|
rpc Remove (RemoveRequest) returns (Response) {} // Удаление товара из корзины
|
|
}
|
|
|
|
message Product { // Модель продукта доступного для добавления в корзину
|
|
uint64 id = 1; // ID продукта
|
|
string name = 2; // Имя/название продукта
|
|
float price = 3; // Цена за единицу продукта
|
|
}
|
|
|
|
message Item { // Модель объекта корзины
|
|
uint64 product_id = 1; // ID продукта
|
|
int32 quanity = 2; // Количество объекта в корзине
|
|
}
|
|
|
|
message Cart {
|
|
repeated Item items = 1; // Список всех товаров в корзине
|
|
float total_price = 2; // Общая сумма за все товары
|
|
int32 items_count = 3; // Число уникальных товаров в корзине
|
|
int32 quanity_count = 4; // Общая сумма количества всех товаров
|
|
}
|
|
|
|
message AddRequest {
|
|
uint64 product_id = 1; // ID продукта
|
|
int32 quanity = 2; // Добавляемое количество продуктов
|
|
}
|
|
|
|
message GetRequest {} // Без каких-либо специальных параметров
|
|
|
|
message UpdateRequest {
|
|
uint64 product_id = 1; // ID продукта
|
|
int32 quanity = 2; // Новое количество продуктов
|
|
}
|
|
|
|
message RemoveRequest {
|
|
uint64 product_id = 1; // ID продукта
|
|
}
|
|
|
|
message Response { // Модель ответа
|
|
bool ok = 1; // Тип ответа: успешный или нет
|
|
string description = 2; // Описание ошибки в случае невалидного ответа
|
|
oneof result { // Результаты запросов
|
|
Item item = 3;
|
|
Cart cart = 4;
|
|
}
|
|
} |