From 4335d14090bd53cc1c61c94e31be53a385aaaf4e Mon Sep 17 00:00:00 2001 From: Fedorov Vladimir Date: Thu, 30 May 2024 03:03:39 +0700 Subject: [PATCH] add labels --- api/main.proto | 5 + .../modules/storage/storage_file/storage.go | 10 + proto/main.pb.go | 465 ++++++++++-------- resources/catalog.json | 10 +- resources/main.swagger.json | 15 + 5 files changed, 304 insertions(+), 201 deletions(-) diff --git a/api/main.proto b/api/main.proto index a0bf066..05e5303 100644 --- a/api/main.proto +++ b/api/main.proto @@ -84,6 +84,7 @@ message Product { repeated Variant variants = 10; repeated Characteristic characteristics = 11; int64 category = 12; + repeated Label labels = 13; } message GroupedProduct { @@ -107,6 +108,10 @@ message Characteristic { string value = 2; } +message Label { + string name = 1; +} + message GetProductReq { int64 id = 1; } diff --git a/internal/modules/storage/storage_file/storage.go b/internal/modules/storage/storage_file/storage.go index 312c38d..b222d12 100644 --- a/internal/modules/storage/storage_file/storage.go +++ b/internal/modules/storage/storage_file/storage.go @@ -22,6 +22,7 @@ type Product struct { Variants []*crm.Variant `json:"variants"` Characteristics []*crm.Characteristic `json:"characteristics"` Category int64 `json:"category"` + Labels []*crm.Label `json:"labels"` } var ( @@ -58,6 +59,7 @@ func (s *storageFile) GetPositions(_ context.Context, id int64) ([]*crm.Product, res := make([]*crm.Product, 0, len(products)) for _, product := range products { if id == 0 || product.Category == id { + s.enrichedProduct(product) res = append(res, product) } } @@ -96,7 +98,9 @@ func (s *storageFile) GetProduct(_ context.Context, id int64) (*crm.Product, err Variants: product.Variants, Characteristics: product.Characteristics, Category: product.Category, + Labels: product.Labels, } + s.enrichedProduct(res) for _, p := range products { if p.Group == product.Group { image := "" @@ -133,6 +137,12 @@ func (s *storageFile) GetBreadcrumbs(ctx context.Context, id int64) ([]*crm.Cate return breadcrumbs, nil } +func (s *storageFile) enrichedProduct(product *crm.Product) { + if len(product.Variants) > 1 { + product.Labels = append(product.Labels, &crm.Label{Name: "Оптом дешевле"}) + } +} + func getBreadcrumbs(categories []*crm.Category, id int64) []*crm.Category { for _, category := range categories { if category.Id == id { diff --git a/proto/main.pb.go b/proto/main.pb.go index 091d2e9..9c10a15 100644 --- a/proto/main.pb.go +++ b/proto/main.pb.go @@ -290,6 +290,7 @@ type Product struct { Variants []*Variant `protobuf:"bytes,10,rep,name=variants,proto3" json:"variants,omitempty"` Characteristics []*Characteristic `protobuf:"bytes,11,rep,name=characteristics,proto3" json:"characteristics,omitempty"` Category int64 `protobuf:"varint,12,opt,name=category,proto3" json:"category,omitempty"` + Labels []*Label `protobuf:"bytes,13,rep,name=labels,proto3" json:"labels,omitempty"` } func (x *Product) Reset() { @@ -408,6 +409,13 @@ func (x *Product) GetCategory() int64 { return 0 } +func (x *Product) GetLabels() []*Label { + if x != nil { + return x.Labels + } + return nil +} + type GroupedProduct struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -636,6 +644,53 @@ func (x *Characteristic) GetValue() string { return "" } +type Label struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *Label) Reset() { + *x = Label{} + if protoimpl.UnsafeEnabled { + mi := &file_main_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Label) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Label) ProtoMessage() {} + +func (x *Label) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Label.ProtoReflect.Descriptor instead. +func (*Label) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{10} +} + +func (x *Label) GetName() string { + if x != nil { + return x.Name + } + return "" +} + type GetProductReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -647,7 +702,7 @@ type GetProductReq struct { func (x *GetProductReq) Reset() { *x = GetProductReq{} if protoimpl.UnsafeEnabled { - mi := &file_main_proto_msgTypes[10] + mi := &file_main_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -660,7 +715,7 @@ func (x *GetProductReq) String() string { func (*GetProductReq) ProtoMessage() {} func (x *GetProductReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[10] + mi := &file_main_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -673,7 +728,7 @@ func (x *GetProductReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProductReq.ProtoReflect.Descriptor instead. func (*GetProductReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{10} + return file_main_proto_rawDescGZIP(), []int{11} } func (x *GetProductReq) GetId() int64 { @@ -694,7 +749,7 @@ type ProductRsp struct { func (x *ProductRsp) Reset() { *x = ProductRsp{} if protoimpl.UnsafeEnabled { - mi := &file_main_proto_msgTypes[11] + mi := &file_main_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -707,7 +762,7 @@ func (x *ProductRsp) String() string { func (*ProductRsp) ProtoMessage() {} func (x *ProductRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[11] + mi := &file_main_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -720,7 +775,7 @@ func (x *ProductRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductRsp.ProtoReflect.Descriptor instead. func (*ProductRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{11} + return file_main_proto_rawDescGZIP(), []int{12} } func (x *ProductRsp) GetProduct() *Product { @@ -741,7 +796,7 @@ type GetBreadcrumbsReq struct { func (x *GetBreadcrumbsReq) Reset() { *x = GetBreadcrumbsReq{} if protoimpl.UnsafeEnabled { - mi := &file_main_proto_msgTypes[12] + mi := &file_main_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -754,7 +809,7 @@ func (x *GetBreadcrumbsReq) String() string { func (*GetBreadcrumbsReq) ProtoMessage() {} func (x *GetBreadcrumbsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[12] + mi := &file_main_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -767,7 +822,7 @@ func (x *GetBreadcrumbsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBreadcrumbsReq.ProtoReflect.Descriptor instead. func (*GetBreadcrumbsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{12} + return file_main_proto_rawDescGZIP(), []int{13} } func (x *GetBreadcrumbsReq) GetId() int64 { @@ -788,7 +843,7 @@ type BreadcrumbsRsp struct { func (x *BreadcrumbsRsp) Reset() { *x = BreadcrumbsRsp{} if protoimpl.UnsafeEnabled { - mi := &file_main_proto_msgTypes[13] + mi := &file_main_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -801,7 +856,7 @@ func (x *BreadcrumbsRsp) String() string { func (*BreadcrumbsRsp) ProtoMessage() {} func (x *BreadcrumbsRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[13] + mi := &file_main_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -814,7 +869,7 @@ func (x *BreadcrumbsRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use BreadcrumbsRsp.ProtoReflect.Descriptor instead. func (*BreadcrumbsRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{13} + return file_main_proto_rawDescGZIP(), []int{14} } func (x *BreadcrumbsRsp) GetCategories() []*Category { @@ -835,7 +890,7 @@ type OrderReq struct { func (x *OrderReq) Reset() { *x = OrderReq{} if protoimpl.UnsafeEnabled { - mi := &file_main_proto_msgTypes[14] + mi := &file_main_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -848,7 +903,7 @@ func (x *OrderReq) String() string { func (*OrderReq) ProtoMessage() {} func (x *OrderReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[14] + mi := &file_main_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -861,7 +916,7 @@ func (x *OrderReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OrderReq.ProtoReflect.Descriptor instead. func (*OrderReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{14} + return file_main_proto_rawDescGZIP(), []int{15} } func (x *OrderReq) GetOrder() *Order { @@ -880,7 +935,7 @@ type OrderRsp struct { func (x *OrderRsp) Reset() { *x = OrderRsp{} if protoimpl.UnsafeEnabled { - mi := &file_main_proto_msgTypes[15] + mi := &file_main_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -893,7 +948,7 @@ func (x *OrderRsp) String() string { func (*OrderRsp) ProtoMessage() {} func (x *OrderRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[15] + mi := &file_main_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -906,7 +961,7 @@ func (x *OrderRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use OrderRsp.ProtoReflect.Descriptor instead. func (*OrderRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{15} + return file_main_proto_rawDescGZIP(), []int{16} } type Order struct { @@ -922,7 +977,7 @@ type Order struct { func (x *Order) Reset() { *x = Order{} if protoimpl.UnsafeEnabled { - mi := &file_main_proto_msgTypes[16] + mi := &file_main_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -935,7 +990,7 @@ func (x *Order) String() string { func (*Order) ProtoMessage() {} func (x *Order) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[16] + mi := &file_main_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -948,7 +1003,7 @@ func (x *Order) ProtoReflect() protoreflect.Message { // Deprecated: Use Order.ProtoReflect.Descriptor instead. func (*Order) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{16} + return file_main_proto_rawDescGZIP(), []int{17} } func (x *Order) GetName() string { @@ -984,7 +1039,7 @@ type OrderItem struct { func (x *OrderItem) Reset() { *x = OrderItem{} if protoimpl.UnsafeEnabled { - mi := &file_main_proto_msgTypes[17] + mi := &file_main_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -997,7 +1052,7 @@ func (x *OrderItem) String() string { func (*OrderItem) ProtoMessage() {} func (x *OrderItem) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[17] + mi := &file_main_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1010,7 +1065,7 @@ func (x *OrderItem) ProtoReflect() protoreflect.Message { // Deprecated: Use OrderItem.ProtoReflect.Descriptor instead. func (*OrderItem) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{17} + return file_main_proto_rawDescGZIP(), []int{18} } func (x *OrderItem) GetProductId() int64 { @@ -1046,7 +1101,7 @@ type CardItem struct { func (x *CardItem) Reset() { *x = CardItem{} if protoimpl.UnsafeEnabled { - mi := &file_main_proto_msgTypes[18] + mi := &file_main_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1059,7 +1114,7 @@ func (x *CardItem) String() string { func (*CardItem) ProtoMessage() {} func (x *CardItem) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[18] + mi := &file_main_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1072,7 +1127,7 @@ func (x *CardItem) ProtoReflect() protoreflect.Message { // Deprecated: Use CardItem.ProtoReflect.Descriptor instead. func (*CardItem) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{18} + return file_main_proto_rawDescGZIP(), []int{19} } func (x *CardItem) GetId() int64 { @@ -1149,7 +1204,7 @@ type CardReq struct { func (x *CardReq) Reset() { *x = CardReq{} if protoimpl.UnsafeEnabled { - mi := &file_main_proto_msgTypes[19] + mi := &file_main_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1162,7 +1217,7 @@ func (x *CardReq) String() string { func (*CardReq) ProtoMessage() {} func (x *CardReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[19] + mi := &file_main_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1175,7 +1230,7 @@ func (x *CardReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CardReq.ProtoReflect.Descriptor instead. func (*CardReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{19} + return file_main_proto_rawDescGZIP(), []int{20} } func (x *CardReq) GetItems() []*OrderItem { @@ -1196,7 +1251,7 @@ type CardRsp struct { func (x *CardRsp) Reset() { *x = CardRsp{} if protoimpl.UnsafeEnabled { - mi := &file_main_proto_msgTypes[20] + mi := &file_main_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1209,7 +1264,7 @@ func (x *CardRsp) String() string { func (*CardRsp) ProtoMessage() {} func (x *CardRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[20] + mi := &file_main_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1222,7 +1277,7 @@ func (x *CardRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use CardRsp.ProtoReflect.Descriptor instead. func (*CardRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{20} + return file_main_proto_rawDescGZIP(), []int{21} } func (x *CardRsp) GetItems() []*CardItem { @@ -1243,7 +1298,7 @@ type GetImageReq struct { func (x *GetImageReq) Reset() { *x = GetImageReq{} if protoimpl.UnsafeEnabled { - mi := &file_main_proto_msgTypes[21] + mi := &file_main_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1256,7 +1311,7 @@ func (x *GetImageReq) String() string { func (*GetImageReq) ProtoMessage() {} func (x *GetImageReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[21] + mi := &file_main_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1269,7 +1324,7 @@ func (x *GetImageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetImageReq.ProtoReflect.Descriptor instead. func (*GetImageReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{21} + return file_main_proto_rawDescGZIP(), []int{22} } func (x *GetImageReq) GetName() string { @@ -1308,7 +1363,7 @@ var file_main_proto_rawDesc = []byte{ 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x22, 0x9c, 0x03, 0x0a, 0x07, 0x50, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x22, 0xc6, 0x03, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, @@ -1334,113 +1389,117 @@ var file_main_proto_rawDesc = []byte{ 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x4c, 0x0a, 0x0e, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, - 0x69, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x54, 0x0a, 0x07, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, - 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x34, 0x0a, - 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, - 0x69, 0x73, 0x74, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x1f, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, - 0x22, 0x3a, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x73, 0x70, 0x12, 0x2c, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x23, 0x0a, 0x11, - 0x47, 0x65, 0x74, 0x42, 0x72, 0x65, 0x61, 0x64, 0x63, 0x72, 0x75, 0x6d, 0x62, 0x73, 0x52, 0x65, - 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x45, 0x0a, 0x0e, 0x42, 0x72, 0x65, 0x61, 0x64, 0x63, 0x72, 0x75, 0x6d, 0x62, 0x73, - 0x52, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, - 0x63, 0x72, 0x6d, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x61, - 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x32, 0x0a, 0x08, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x0a, 0x0a, 0x08, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x73, 0x70, 0x22, 0x5d, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x72, 0x61, - 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, - 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x40, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xd2, 0x01, 0x0a, 0x08, 0x43, 0x61, - 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, - 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x35, - 0x0a, 0x07, 0x43, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x74, 0x65, - 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, - 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x34, 0x0a, 0x07, 0x43, 0x61, 0x72, 0x64, 0x52, 0x73, 0x70, - 0x12, 0x29, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x43, 0x61, 0x72, 0x64, - 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x21, 0x0a, 0x0b, 0x47, - 0x65, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x32, 0xe0, - 0x04, 0x0a, 0x03, 0x43, 0x52, 0x4d, 0x12, 0x4f, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x61, 0x74, - 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x18, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, - 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x15, - 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, - 0x6f, 0x67, 0x52, 0x73, 0x70, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, - 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x5c, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, - 0x63, 0x72, 0x6d, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x73, 0x70, 0x22, 0x17, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x55, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x12, 0x18, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, - 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x52, 0x73, 0x70, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x6d, 0x0a, 0x0e, - 0x47, 0x65, 0x74, 0x42, 0x72, 0x65, 0x61, 0x64, 0x63, 0x72, 0x75, 0x6d, 0x62, 0x73, 0x12, 0x1c, - 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x72, - 0x65, 0x61, 0x64, 0x63, 0x72, 0x75, 0x6d, 0x62, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x63, - 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x42, 0x72, 0x65, 0x61, 0x64, 0x63, 0x72, - 0x75, 0x6d, 0x62, 0x73, 0x52, 0x73, 0x70, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, - 0x1a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, - 0x62, 0x72, 0x65, 0x61, 0x64, 0x63, 0x72, 0x75, 0x6d, 0x62, 0x73, 0x12, 0x49, 0x0a, 0x05, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x12, 0x13, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, - 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x63, 0x72, 0x61, 0x62, - 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x73, 0x70, 0x22, 0x16, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x3a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x07, 0x2f, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x47, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, - 0x64, 0x12, 0x12, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x43, 0x61, - 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, - 0x6d, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x52, 0x73, 0x70, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x0e, 0x3a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x05, 0x2f, 0x63, 0x61, 0x72, 0x64, 0x12, - 0x50, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x16, 0x2e, 0x63, 0x72, - 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x10, 0x12, 0x0e, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x42, 0x0e, 0x92, 0x41, 0x00, 0x5a, 0x09, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x72, 0x61, 0x62, + 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x22, 0x4c, 0x0a, 0x0e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x65, 0x64, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x14, 0x0a, 0x05, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x22, 0x54, 0x0a, 0x07, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, + 0x72, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x34, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x0a, + 0x0e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x1b, 0x0a, 0x05, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3a, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x52, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, + 0x72, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x22, 0x23, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x72, 0x65, 0x61, 0x64, 0x63, + 0x72, 0x75, 0x6d, 0x62, 0x73, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x0e, 0x42, 0x72, 0x65, 0x61, + 0x64, 0x63, 0x72, 0x75, 0x6d, 0x62, 0x73, 0x52, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x0a, 0x63, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, + 0x32, 0x0a, 0x08, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x05, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x72, 0x61, + 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x22, 0x0a, 0x0a, 0x08, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x73, 0x70, 0x22, + 0x5d, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, + 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x40, + 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0xd2, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x72, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x16, 0x0a, + 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x69, 0x6e, + 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x35, 0x0a, 0x07, 0x43, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, + 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x34, 0x0a, 0x07, + 0x43, 0x61, 0x72, 0x64, 0x52, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, + 0x72, 0x6d, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x22, 0x21, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x32, 0xe0, 0x04, 0x0a, 0x03, 0x43, 0x52, 0x4d, 0x12, 0x4f, 0x0a, + 0x0a, 0x47, 0x65, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x18, 0x2e, 0x63, 0x72, + 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, + 0x6f, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, + 0x6d, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x73, 0x70, 0x22, 0x10, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x5c, + 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, + 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x63, 0x72, 0x61, + 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x73, 0x70, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x55, 0x0a, 0x0a, + 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x18, 0x2e, 0x63, 0x72, 0x61, + 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, + 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x73, 0x70, 0x22, 0x16, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x7d, 0x12, 0x6d, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x65, 0x61, 0x64, 0x63, + 0x72, 0x75, 0x6d, 0x62, 0x73, 0x12, 0x1c, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, + 0x6d, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x65, 0x61, 0x64, 0x63, 0x72, 0x75, 0x6d, 0x62, 0x73, + 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, + 0x42, 0x72, 0x65, 0x61, 0x64, 0x63, 0x72, 0x75, 0x6d, 0x62, 0x73, 0x52, 0x73, 0x70, 0x22, 0x22, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x65, 0x61, 0x64, 0x63, 0x72, 0x75, 0x6d, + 0x62, 0x73, 0x12, 0x49, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x13, 0x2e, 0x63, 0x72, + 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x1a, 0x13, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x52, 0x73, 0x70, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x3a, 0x05, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x22, 0x07, 0x2f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x47, 0x0a, + 0x07, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x12, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, + 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x63, + 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x52, 0x73, 0x70, + 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x3a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, + 0x05, 0x2f, 0x63, 0x61, 0x72, 0x64, 0x12, 0x50, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x12, 0x16, 0x2e, 0x63, 0x72, 0x61, 0x62, 0x73, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x47, + 0x65, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, + 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x42, 0x0e, 0x92, 0x41, 0x00, 0x5a, 0x09, 0x70, + 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1455,7 +1514,7 @@ func file_main_proto_rawDescGZIP() []byte { return file_main_proto_rawDescData } -var file_main_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_main_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_main_proto_goTypes = []interface{}{ (*GetCatalogReq)(nil), // 0: crabs.crm.GetCatalogReq (*CatalogRsp)(nil), // 1: crabs.crm.CatalogRsp @@ -1467,19 +1526,20 @@ var file_main_proto_goTypes = []interface{}{ (*Variant)(nil), // 7: crabs.crm.Variant (*Property)(nil), // 8: crabs.crm.Property (*Characteristic)(nil), // 9: crabs.crm.Characteristic - (*GetProductReq)(nil), // 10: crabs.crm.GetProductReq - (*ProductRsp)(nil), // 11: crabs.crm.ProductRsp - (*GetBreadcrumbsReq)(nil), // 12: crabs.crm.GetBreadcrumbsReq - (*BreadcrumbsRsp)(nil), // 13: crabs.crm.BreadcrumbsRsp - (*OrderReq)(nil), // 14: crabs.crm.OrderReq - (*OrderRsp)(nil), // 15: crabs.crm.OrderRsp - (*Order)(nil), // 16: crabs.crm.Order - (*OrderItem)(nil), // 17: crabs.crm.OrderItem - (*CardItem)(nil), // 18: crabs.crm.CardItem - (*CardReq)(nil), // 19: crabs.crm.CardReq - (*CardRsp)(nil), // 20: crabs.crm.CardRsp - (*GetImageReq)(nil), // 21: crabs.crm.GetImageReq - (*httpbody.HttpBody)(nil), // 22: google.api.HttpBody + (*Label)(nil), // 10: crabs.crm.Label + (*GetProductReq)(nil), // 11: crabs.crm.GetProductReq + (*ProductRsp)(nil), // 12: crabs.crm.ProductRsp + (*GetBreadcrumbsReq)(nil), // 13: crabs.crm.GetBreadcrumbsReq + (*BreadcrumbsRsp)(nil), // 14: crabs.crm.BreadcrumbsRsp + (*OrderReq)(nil), // 15: crabs.crm.OrderReq + (*OrderRsp)(nil), // 16: crabs.crm.OrderRsp + (*Order)(nil), // 17: crabs.crm.Order + (*OrderItem)(nil), // 18: crabs.crm.OrderItem + (*CardItem)(nil), // 19: crabs.crm.CardItem + (*CardReq)(nil), // 20: crabs.crm.CardReq + (*CardRsp)(nil), // 21: crabs.crm.CardRsp + (*GetImageReq)(nil), // 22: crabs.crm.GetImageReq + (*httpbody.HttpBody)(nil), // 23: google.api.HttpBody } var file_main_proto_depIdxs = []int32{ 2, // 0: crabs.crm.CatalogRsp.categories:type_name -> crabs.crm.Category @@ -1488,32 +1548,33 @@ var file_main_proto_depIdxs = []int32{ 6, // 3: crabs.crm.Product.grouped_products:type_name -> crabs.crm.GroupedProduct 7, // 4: crabs.crm.Product.variants:type_name -> crabs.crm.Variant 9, // 5: crabs.crm.Product.characteristics:type_name -> crabs.crm.Characteristic - 8, // 6: crabs.crm.Variant.properties:type_name -> crabs.crm.Property - 5, // 7: crabs.crm.ProductRsp.product:type_name -> crabs.crm.Product - 2, // 8: crabs.crm.BreadcrumbsRsp.categories:type_name -> crabs.crm.Category - 16, // 9: crabs.crm.OrderReq.order:type_name -> crabs.crm.Order - 17, // 10: crabs.crm.Order.items:type_name -> crabs.crm.OrderItem - 17, // 11: crabs.crm.CardReq.items:type_name -> crabs.crm.OrderItem - 18, // 12: crabs.crm.CardRsp.items:type_name -> crabs.crm.CardItem - 0, // 13: crabs.crm.CRM.GetCatalog:input_type -> crabs.crm.GetCatalogReq - 3, // 14: crabs.crm.CRM.GetPositions:input_type -> crabs.crm.GetPositionsReq - 10, // 15: crabs.crm.CRM.GetProduct:input_type -> crabs.crm.GetProductReq - 12, // 16: crabs.crm.CRM.GetBreadcrumbs:input_type -> crabs.crm.GetBreadcrumbsReq - 14, // 17: crabs.crm.CRM.Order:input_type -> crabs.crm.OrderReq - 19, // 18: crabs.crm.CRM.GetCard:input_type -> crabs.crm.CardReq - 21, // 19: crabs.crm.CRM.GetImage:input_type -> crabs.crm.GetImageReq - 1, // 20: crabs.crm.CRM.GetCatalog:output_type -> crabs.crm.CatalogRsp - 4, // 21: crabs.crm.CRM.GetPositions:output_type -> crabs.crm.PositionsRsp - 11, // 22: crabs.crm.CRM.GetProduct:output_type -> crabs.crm.ProductRsp - 13, // 23: crabs.crm.CRM.GetBreadcrumbs:output_type -> crabs.crm.BreadcrumbsRsp - 15, // 24: crabs.crm.CRM.Order:output_type -> crabs.crm.OrderRsp - 20, // 25: crabs.crm.CRM.GetCard:output_type -> crabs.crm.CardRsp - 22, // 26: crabs.crm.CRM.GetImage:output_type -> google.api.HttpBody - 20, // [20:27] is the sub-list for method output_type - 13, // [13:20] is the sub-list for method input_type - 13, // [13:13] is the sub-list for extension type_name - 13, // [13:13] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name + 10, // 6: crabs.crm.Product.labels:type_name -> crabs.crm.Label + 8, // 7: crabs.crm.Variant.properties:type_name -> crabs.crm.Property + 5, // 8: crabs.crm.ProductRsp.product:type_name -> crabs.crm.Product + 2, // 9: crabs.crm.BreadcrumbsRsp.categories:type_name -> crabs.crm.Category + 17, // 10: crabs.crm.OrderReq.order:type_name -> crabs.crm.Order + 18, // 11: crabs.crm.Order.items:type_name -> crabs.crm.OrderItem + 18, // 12: crabs.crm.CardReq.items:type_name -> crabs.crm.OrderItem + 19, // 13: crabs.crm.CardRsp.items:type_name -> crabs.crm.CardItem + 0, // 14: crabs.crm.CRM.GetCatalog:input_type -> crabs.crm.GetCatalogReq + 3, // 15: crabs.crm.CRM.GetPositions:input_type -> crabs.crm.GetPositionsReq + 11, // 16: crabs.crm.CRM.GetProduct:input_type -> crabs.crm.GetProductReq + 13, // 17: crabs.crm.CRM.GetBreadcrumbs:input_type -> crabs.crm.GetBreadcrumbsReq + 15, // 18: crabs.crm.CRM.Order:input_type -> crabs.crm.OrderReq + 20, // 19: crabs.crm.CRM.GetCard:input_type -> crabs.crm.CardReq + 22, // 20: crabs.crm.CRM.GetImage:input_type -> crabs.crm.GetImageReq + 1, // 21: crabs.crm.CRM.GetCatalog:output_type -> crabs.crm.CatalogRsp + 4, // 22: crabs.crm.CRM.GetPositions:output_type -> crabs.crm.PositionsRsp + 12, // 23: crabs.crm.CRM.GetProduct:output_type -> crabs.crm.ProductRsp + 14, // 24: crabs.crm.CRM.GetBreadcrumbs:output_type -> crabs.crm.BreadcrumbsRsp + 16, // 25: crabs.crm.CRM.Order:output_type -> crabs.crm.OrderRsp + 21, // 26: crabs.crm.CRM.GetCard:output_type -> crabs.crm.CardRsp + 23, // 27: crabs.crm.CRM.GetImage:output_type -> google.api.HttpBody + 21, // [21:28] is the sub-list for method output_type + 14, // [14:21] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name } func init() { file_main_proto_init() } @@ -1643,7 +1704,7 @@ func file_main_proto_init() { } } file_main_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetProductReq); i { + switch v := v.(*Label); i { case 0: return &v.state case 1: @@ -1655,7 +1716,7 @@ func file_main_proto_init() { } } file_main_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProductRsp); i { + switch v := v.(*GetProductReq); i { case 0: return &v.state case 1: @@ -1667,7 +1728,7 @@ func file_main_proto_init() { } } file_main_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBreadcrumbsReq); i { + switch v := v.(*ProductRsp); i { case 0: return &v.state case 1: @@ -1679,7 +1740,7 @@ func file_main_proto_init() { } } file_main_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BreadcrumbsRsp); i { + switch v := v.(*GetBreadcrumbsReq); i { case 0: return &v.state case 1: @@ -1691,7 +1752,7 @@ func file_main_proto_init() { } } file_main_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderReq); i { + switch v := v.(*BreadcrumbsRsp); i { case 0: return &v.state case 1: @@ -1703,7 +1764,7 @@ func file_main_proto_init() { } } file_main_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderRsp); i { + switch v := v.(*OrderReq); i { case 0: return &v.state case 1: @@ -1715,7 +1776,7 @@ func file_main_proto_init() { } } file_main_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Order); i { + switch v := v.(*OrderRsp); i { case 0: return &v.state case 1: @@ -1727,7 +1788,7 @@ func file_main_proto_init() { } } file_main_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderItem); i { + switch v := v.(*Order); i { case 0: return &v.state case 1: @@ -1739,7 +1800,7 @@ func file_main_proto_init() { } } file_main_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CardItem); i { + switch v := v.(*OrderItem); i { case 0: return &v.state case 1: @@ -1751,7 +1812,7 @@ func file_main_proto_init() { } } file_main_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CardReq); i { + switch v := v.(*CardItem); i { case 0: return &v.state case 1: @@ -1763,7 +1824,7 @@ func file_main_proto_init() { } } file_main_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CardRsp); i { + switch v := v.(*CardReq); i { case 0: return &v.state case 1: @@ -1775,6 +1836,18 @@ func file_main_proto_init() { } } file_main_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CardRsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_main_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetImageReq); i { case 0: return &v.state @@ -1793,7 +1866,7 @@ func file_main_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_main_proto_rawDesc, NumEnums: 0, - NumMessages: 22, + NumMessages: 23, NumExtensions: 0, NumServices: 1, }, diff --git a/resources/catalog.json b/resources/catalog.json index 2298092..76463c1 100644 --- a/resources/catalog.json +++ b/resources/catalog.json @@ -2,30 +2,30 @@ { "id": 0, "name": "Главная", - "uri": "/categories/0", + "uri": "/positions/0", "children": [ { "id": 1, "name": "Пряники", - "uri": "/categories/1", + "uri": "/positions/1", "children": [] }, { "id": 2, "name": "Печенье бисквитное", - "uri": "/categories/2", + "uri": "/positions/2", "children": [] }, { "id": 3, "name": "Печенье песочное", - "uri": "/categories/3", + "uri": "/positions/3", "children": [] }, { "id": 4, "name": "Восточные сладости", - "uri": "/categories/4", + "uri": "/positions/4", "children": [] } ] diff --git a/resources/main.swagger.json b/resources/main.swagger.json index a66de95..6b25c24 100644 --- a/resources/main.swagger.json +++ b/resources/main.swagger.json @@ -254,6 +254,14 @@ }, "description": "Message that represents an arbitrary HTTP body. It should only be used for\npayload formats that can't be represented as JSON, such as raw binary or\nan HTML page.\n\n\nThis message can be used both in streaming and non-streaming API methods in\nthe request as well as the response.\n\nIt can be used as a top-level request field, which is convenient if one\nwants to extract parameters from either the URL or HTTP template into the\nrequest fields and also want access to the raw HTTP body.\n\nExample:\n\n message GetResourceRequest {\n // A unique request id.\n string request_id = 1;\n\n // The raw HTTP body is bound to this field.\n google.api.HttpBody http_body = 2;\n\n }\n\n service ResourceService {\n rpc GetResource(GetResourceRequest)\n returns (google.api.HttpBody);\n rpc UpdateResource(google.api.HttpBody)\n returns (google.protobuf.Empty);\n\n }\n\nExample with streaming methods:\n\n service CaldavService {\n rpc GetCalendar(stream google.api.HttpBody)\n returns (stream google.api.HttpBody);\n rpc UpdateCalendar(stream google.api.HttpBody)\n returns (stream google.api.HttpBody);\n\n }\n\nUse of this type only changes how the request and response bodies are\nhandled, all other features will continue to work unchanged." }, + "crabscrmLabel": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + }, "crabscrmOrder": { "type": "object", "properties": { @@ -478,6 +486,13 @@ "category": { "type": "string", "format": "int64" + }, + "labels": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/crabscrmLabel" + } } } },