1
0
Fork 0
test/internal/model/model.proto

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;
}
}