diff --git a/.gitignore b/.gitignore index e5f2524..a81722c 100644 Binary files a/.gitignore and b/.gitignore differ diff --git a/client/src/components/pages/StatisticPage.vue b/client/src/components/pages/StatisticPage.vue index a3c78bf..b5e8cf6 100644 --- a/client/src/components/pages/StatisticPage.vue +++ b/client/src/components/pages/StatisticPage.vue @@ -31,6 +31,7 @@ type="date" :max="new Date().toISOString().split('T')[0]" @change="updateDateLimits()" + required />
@@ -43,10 +44,27 @@ min="" max="" disabled + required />
+
+
Типы растений
+
+ +
+
Условия освещения
+ +
+ +
+ +
Работа с базой данных @@ -94,7 +112,10 @@ export default { statType: '', dateFrom: '', dateTo: '', + lighting: [], chart: false, + types: [], + selectedTypes: [], data: { labels: [], datasets: [] @@ -158,6 +179,16 @@ export default { }; }, + created() { + axios + .get(`/api/plants/types/typesArray`) + .then((response) => { + response.data.types.forEach(elem => { + this.types.push(elem); + }); + }) + }, + methods: { updateDateLimits() { const today = new Date().toISOString().split("T")[0]; @@ -183,17 +214,28 @@ export default { }, getStatistic() { - this.chart = false - const datePeriod = { - filter: { - timeFrom: this.formatTimeFrom(this.dateFrom), - timeTo: this.formatTimeTo(this.dateTo) + this.chart = false; + let filter = {}; + if (this.statType === "plants") { + filter = { + filter: { + timeFrom: this.formatTimeFrom(this.dateFrom), + timeTo: this.formatTimeTo(this.dateTo), + }, + type: this.selectedTypes, + lightCondition: this.lighting + } + } else { + filter = { + filter: { + timeFrom: this.formatTimeFrom(this.dateFrom), + timeTo: this.formatTimeTo(this.dateTo) + } } } this.data = { datasets: [], labels: [] }; - axios - .post(`/api/stats/${this.statType}`, datePeriod) + .post(`/api/stats/${this.statType}`, filter) .then((response) => { if (this.statType === 'plants') { if (Object.keys(response.data).length === 0) { @@ -448,4 +490,12 @@ export default { padding: 10px; background-color: #FFFFFF; } + +.scrollable-checkboxes { + max-height: 120px; + overflow-y: auto; + border: 1px solid #ccc; + padding: 10px; + border-radius: 4px; +} \ No newline at end of file diff --git a/server/api/plants/v1/plants.proto b/server/api/plants/v1/plants.proto index 9b24401..79b9c50 100644 --- a/server/api/plants/v1/plants.proto +++ b/server/api/plants/v1/plants.proto @@ -85,6 +85,11 @@ service PlantsAPI { get: "/api/plants/archive/{userId}" }; }; + rpc ListPlantTypesV1(GetPlantTypesV1Request) returns (GetPlantTypesV1Response) { + option (google.api.http) = { + get: "/api/plants/types/typesArray" + }; + }; } message Filter { @@ -285,4 +290,12 @@ message GetArchivedPlantsV1Request{ } message GetArchivedPlantsV1Response{ repeated Plant plants = 1; +} + +message GetPlantTypesV1Request { + +} + +message GetPlantTypesV1Response { + repeated string types = 1; } \ No newline at end of file diff --git a/server/api/stats/v1/stats.proto b/server/api/stats/v1/stats.proto index 689cda3..186924b 100644 --- a/server/api/stats/v1/stats.proto +++ b/server/api/stats/v1/stats.proto @@ -41,6 +41,8 @@ service StatsAPI { message GetPlantsStatsV1Request{ TimeFilter filter = 1; + repeated string type = 2; + repeated string lightCondition = 3; } message GetPlantsStatsV1Response{ message StatsInfo { diff --git a/server/internal/handlers/plants/list_plant_types_v1.go b/server/internal/handlers/plants/list_plant_types_v1.go new file mode 100644 index 0000000..1b1f1fd --- /dev/null +++ b/server/internal/handlers/plants/list_plant_types_v1.go @@ -0,0 +1,22 @@ +package plants + +import ( + "context" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + api "plants/internal/pkg/pb/plants/v1" +) + +func (h *Handler) ListPlantTypesV1( + ctx context.Context, + req *api.GetPlantTypesV1Request, +) (*api.GetPlantTypesV1Response, error) { + types, err := h.storage.GetTypes(ctx) + if err != nil { + return nil, status.Errorf(codes.Internal, "some error occured while getting types %v", err) + } + return &api.GetPlantTypesV1Response{ + Types: types, + }, nil +} diff --git a/server/internal/handlers/plants/service.go b/server/internal/handlers/plants/service.go index c3ec503..72f98c1 100644 --- a/server/internal/handlers/plants/service.go +++ b/server/internal/handlers/plants/service.go @@ -27,6 +27,7 @@ type Storage interface { AddTradeToUser(ctx context.Context, userId, tradeId primitive.ObjectID) error GetPlantsByUserId(ctx context.Context, userId string, isSold bool) ([]*models.Plant, error) AddPlantToUser(ctx context.Context, plant *models.Plant) error + GetTypes(ctx context.Context) ([]string, error) } type Handler struct { diff --git a/server/internal/handlers/stats/get_plants_stats_v1.go b/server/internal/handlers/stats/get_plants_stats_v1.go index 656eabe..dbdef65 100644 --- a/server/internal/handlers/stats/get_plants_stats_v1.go +++ b/server/internal/handlers/stats/get_plants_stats_v1.go @@ -12,6 +12,12 @@ func (h *Handler) GetPlantsStatsV1(ctx context.Context, req *api.GetPlantsStatsV1Request, ) (*api.GetPlantsStatsV1Response, error) { fltr := parseFilter(req.Filter) + if len(req.LightCondition) != 0 { + fltr["light_condition"] = req.LightCondition + } + if len(req.Type) != 0 { + fltr["type"] = req.Type + } plants, err := h.storage.GetPlantsStats(ctx, fltr) if err != nil { return nil, status.Errorf(codes.Internal, "Error occured %v", err) diff --git a/server/internal/pkg/pb/data/v1/data.pb.go b/server/internal/pkg/pb/data/v1/data.pb.go index e89ba54..a3d4161 100644 --- a/server/internal/pkg/pb/data/v1/data.pb.go +++ b/server/internal/pkg/pb/data/v1/data.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 -// protoc v5.29.0--rc2 +// protoc-gen-go v1.35.2 +// protoc v3.6.1 // source: data/v1/data.proto package data_v1 diff --git a/server/internal/pkg/pb/data/v1/data_grpc.pb.go b/server/internal/pkg/pb/data/v1/data_grpc.pb.go index 9a5e47d..44e3746 100644 --- a/server/internal/pkg/pb/data/v1/data_grpc.pb.go +++ b/server/internal/pkg/pb/data/v1/data_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.29.0--rc2 +// - protoc v3.6.1 // source: data/v1/data.proto package data_v1 diff --git a/server/internal/pkg/pb/plants/v1/plants.pb.go b/server/internal/pkg/pb/plants/v1/plants.pb.go index 52765c2..ac7eea6 100644 --- a/server/internal/pkg/pb/plants/v1/plants.pb.go +++ b/server/internal/pkg/pb/plants/v1/plants.pb.go @@ -1,16 +1,16 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 -// protoc v5.29.0--rc2 +// protoc-gen-go v1.35.2 +// protoc v3.6.1 // source: plants/v1/plants.proto package plants_v1 import ( + timestamp "github.com/golang/protobuf/ptypes/timestamp" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" ) @@ -549,9 +549,9 @@ type CareRule struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - User *CareRule_User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + User *CareRule_User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + CreatedAt *timestamp.Timestamp `protobuf:"bytes,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` } func (x *CareRule) Reset() { @@ -598,7 +598,7 @@ func (x *CareRule) GetDescription() string { return "" } -func (x *CareRule) GetCreatedAt() *timestamppb.Timestamp { +func (x *CareRule) GetCreatedAt() *timestamp.Timestamp { if x != nil { return x.CreatedAt } @@ -1386,12 +1386,12 @@ type Plant struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Image string `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"` - Species string `protobuf:"bytes,3,opt,name=species,proto3" json:"species,omitempty"` - Price float32 `protobuf:"fixed32,4,opt,name=price,proto3" json:"price,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - Place string `protobuf:"bytes,6,opt,name=place,proto3" json:"place,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Image string `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"` + Species string `protobuf:"bytes,3,opt,name=species,proto3" json:"species,omitempty"` + Price float32 `protobuf:"fixed32,4,opt,name=price,proto3" json:"price,omitempty"` + CreatedAt *timestamp.Timestamp `protobuf:"bytes,5,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + Place string `protobuf:"bytes,6,opt,name=place,proto3" json:"place,omitempty"` } func (x *Plant) Reset() { @@ -1452,7 +1452,7 @@ func (x *Plant) GetPrice() float32 { return 0 } -func (x *Plant) GetCreatedAt() *timestamppb.Timestamp { +func (x *Plant) GetCreatedAt() *timestamp.Timestamp { if x != nil { return x.CreatedAt } @@ -1646,6 +1646,87 @@ func (x *GetArchivedPlantsV1Response) GetPlants() []*Plant { return nil } +type GetPlantTypesV1Request struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetPlantTypesV1Request) Reset() { + *x = GetPlantTypesV1Request{} + mi := &file_plants_v1_plants_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPlantTypesV1Request) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPlantTypesV1Request) ProtoMessage() {} + +func (x *GetPlantTypesV1Request) ProtoReflect() protoreflect.Message { + mi := &file_plants_v1_plants_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPlantTypesV1Request.ProtoReflect.Descriptor instead. +func (*GetPlantTypesV1Request) Descriptor() ([]byte, []int) { + return file_plants_v1_plants_proto_rawDescGZIP(), []int{28} +} + +type GetPlantTypesV1Response struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Types []string `protobuf:"bytes,1,rep,name=types,proto3" json:"types,omitempty"` +} + +func (x *GetPlantTypesV1Response) Reset() { + *x = GetPlantTypesV1Response{} + mi := &file_plants_v1_plants_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPlantTypesV1Response) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPlantTypesV1Response) ProtoMessage() {} + +func (x *GetPlantTypesV1Response) ProtoReflect() protoreflect.Message { + mi := &file_plants_v1_plants_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPlantTypesV1Response.ProtoReflect.Descriptor instead. +func (*GetPlantTypesV1Response) Descriptor() ([]byte, []int) { + return file_plants_v1_plants_proto_rawDescGZIP(), []int{29} +} + +func (x *GetPlantTypesV1Response) GetTypes() []string { + if x != nil { + return x.Types + } + return nil +} + type CareRule_User struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1659,7 +1740,7 @@ type CareRule_User struct { func (x *CareRule_User) Reset() { *x = CareRule_User{} - mi := &file_plants_v1_plants_proto_msgTypes[28] + mi := &file_plants_v1_plants_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1671,7 +1752,7 @@ func (x *CareRule_User) String() string { func (*CareRule_User) ProtoMessage() {} func (x *CareRule_User) ProtoReflect() protoreflect.Message { - mi := &file_plants_v1_plants_proto_msgTypes[28] + mi := &file_plants_v1_plants_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1729,7 +1810,7 @@ type GetPlantsWithCareRulesV1Request_Filter struct { func (x *GetPlantsWithCareRulesV1Request_Filter) Reset() { *x = GetPlantsWithCareRulesV1Request_Filter{} - mi := &file_plants_v1_plants_proto_msgTypes[29] + mi := &file_plants_v1_plants_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1741,7 +1822,7 @@ func (x *GetPlantsWithCareRulesV1Request_Filter) String() string { func (*GetPlantsWithCareRulesV1Request_Filter) ProtoMessage() {} func (x *GetPlantsWithCareRulesV1Request_Filter) ProtoReflect() protoreflect.Message { - mi := &file_plants_v1_plants_proto_msgTypes[29] + mi := &file_plants_v1_plants_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1805,7 +1886,7 @@ type GetPlantsWithCareRulesV1Response_PlantInfo struct { func (x *GetPlantsWithCareRulesV1Response_PlantInfo) Reset() { *x = GetPlantsWithCareRulesV1Response_PlantInfo{} - mi := &file_plants_v1_plants_proto_msgTypes[30] + mi := &file_plants_v1_plants_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1817,7 +1898,7 @@ func (x *GetPlantsWithCareRulesV1Response_PlantInfo) String() string { func (*GetPlantsWithCareRulesV1Response_PlantInfo) ProtoMessage() {} func (x *GetPlantsWithCareRulesV1Response_PlantInfo) ProtoReflect() protoreflect.Message { - mi := &file_plants_v1_plants_proto_msgTypes[30] + mi := &file_plants_v1_plants_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1866,17 +1947,17 @@ type GetPlantsForTradeV1Response_PlantInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Species string `protobuf:"bytes,1,opt,name=species,proto3" json:"species,omitempty"` - Price string `protobuf:"bytes,2,opt,name=price,proto3" json:"price,omitempty"` - Place string `protobuf:"bytes,3,opt,name=place,proto3" json:"place,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"` - Image string `protobuf:"bytes,6,opt,name=image,proto3" json:"image,omitempty"` + Species string `protobuf:"bytes,1,opt,name=species,proto3" json:"species,omitempty"` + Price string `protobuf:"bytes,2,opt,name=price,proto3" json:"price,omitempty"` + Place string `protobuf:"bytes,3,opt,name=place,proto3" json:"place,omitempty"` + CreatedAt *timestamp.Timestamp `protobuf:"bytes,4,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"` + Image string `protobuf:"bytes,6,opt,name=image,proto3" json:"image,omitempty"` } func (x *GetPlantsForTradeV1Response_PlantInfo) Reset() { *x = GetPlantsForTradeV1Response_PlantInfo{} - mi := &file_plants_v1_plants_proto_msgTypes[31] + mi := &file_plants_v1_plants_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1888,7 +1969,7 @@ func (x *GetPlantsForTradeV1Response_PlantInfo) String() string { func (*GetPlantsForTradeV1Response_PlantInfo) ProtoMessage() {} func (x *GetPlantsForTradeV1Response_PlantInfo) ProtoReflect() protoreflect.Message { - mi := &file_plants_v1_plants_proto_msgTypes[31] + mi := &file_plants_v1_plants_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1925,7 +2006,7 @@ func (x *GetPlantsForTradeV1Response_PlantInfo) GetPlace() string { return "" } -func (x *GetPlantsForTradeV1Response_PlantInfo) GetCreatedAt() *timestamppb.Timestamp { +func (x *GetPlantsForTradeV1Response_PlantInfo) GetCreatedAt() *timestamp.Timestamp { if x != nil { return x.CreatedAt } @@ -1951,23 +2032,23 @@ type GetPlantByIdV1Response_PlantInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Species string `protobuf:"bytes,1,opt,name=species,proto3" json:"species,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Size string `protobuf:"bytes,3,opt,name=size,proto3" json:"size,omitempty"` - LightCondition string `protobuf:"bytes,4,opt,name=lightCondition,proto3" json:"lightCondition,omitempty"` - WateringFrequency string `protobuf:"bytes,5,opt,name=wateringFrequency,proto3" json:"wateringFrequency,omitempty"` - TemperatureRegime string `protobuf:"bytes,6,opt,name=temperatureRegime,proto3" json:"temperatureRegime,omitempty"` - CareComplexity string `protobuf:"bytes,7,opt,name=careComplexity,proto3" json:"careComplexity,omitempty"` - Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description,omitempty"` - Place string `protobuf:"bytes,9,opt,name=place,proto3" json:"place,omitempty"` - Image string `protobuf:"bytes,10,opt,name=image,proto3" json:"image,omitempty"` - Price float32 `protobuf:"fixed32,11,opt,name=price,proto3" json:"price,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + Species string `protobuf:"bytes,1,opt,name=species,proto3" json:"species,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Size string `protobuf:"bytes,3,opt,name=size,proto3" json:"size,omitempty"` + LightCondition string `protobuf:"bytes,4,opt,name=lightCondition,proto3" json:"lightCondition,omitempty"` + WateringFrequency string `protobuf:"bytes,5,opt,name=wateringFrequency,proto3" json:"wateringFrequency,omitempty"` + TemperatureRegime string `protobuf:"bytes,6,opt,name=temperatureRegime,proto3" json:"temperatureRegime,omitempty"` + CareComplexity string `protobuf:"bytes,7,opt,name=careComplexity,proto3" json:"careComplexity,omitempty"` + Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description,omitempty"` + Place string `protobuf:"bytes,9,opt,name=place,proto3" json:"place,omitempty"` + Image string `protobuf:"bytes,10,opt,name=image,proto3" json:"image,omitempty"` + Price float32 `protobuf:"fixed32,11,opt,name=price,proto3" json:"price,omitempty"` + CreatedAt *timestamp.Timestamp `protobuf:"bytes,12,opt,name=createdAt,proto3" json:"createdAt,omitempty"` } func (x *GetPlantByIdV1Response_PlantInfo) Reset() { *x = GetPlantByIdV1Response_PlantInfo{} - mi := &file_plants_v1_plants_proto_msgTypes[32] + mi := &file_plants_v1_plants_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1979,7 +2060,7 @@ func (x *GetPlantByIdV1Response_PlantInfo) String() string { func (*GetPlantByIdV1Response_PlantInfo) ProtoMessage() {} func (x *GetPlantByIdV1Response_PlantInfo) ProtoReflect() protoreflect.Message { - mi := &file_plants_v1_plants_proto_msgTypes[32] + mi := &file_plants_v1_plants_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2072,7 +2153,7 @@ func (x *GetPlantByIdV1Response_PlantInfo) GetPrice() float32 { return 0 } -func (x *GetPlantByIdV1Response_PlantInfo) GetCreatedAt() *timestamppb.Timestamp { +func (x *GetPlantByIdV1Response_PlantInfo) GetCreatedAt() *timestamp.Timestamp { if x != nil { return x.CreatedAt } @@ -2093,7 +2174,7 @@ type GetPlantByIdV1Response_User struct { func (x *GetPlantByIdV1Response_User) Reset() { *x = GetPlantByIdV1Response_User{} - mi := &file_plants_v1_plants_proto_msgTypes[33] + mi := &file_plants_v1_plants_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2105,7 +2186,7 @@ func (x *GetPlantByIdV1Response_User) String() string { func (*GetPlantByIdV1Response_User) ProtoMessage() {} func (x *GetPlantByIdV1Response_User) ProtoReflect() protoreflect.Message { - mi := &file_plants_v1_plants_proto_msgTypes[33] + mi := &file_plants_v1_plants_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2435,105 +2516,117 @@ var file_plants_v1_plants_proto_rawDesc = []byte{ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x74, - 0x73, 0x32, 0x80, 0x0c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x41, 0x50, 0x49, 0x12, - 0x97, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x57, 0x69, 0x74, - 0x68, 0x43, 0x61, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x56, 0x31, 0x12, 0x2a, 0x2e, 0x70, - 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, - 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x43, 0x61, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x56, - 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x57, 0x69, - 0x74, 0x68, 0x43, 0x61, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, - 0x22, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x72, 0x65, 0x2f, 0x7b, 0x70, 0x61, 0x67, - 0x65, 0x7d, 0x2f, 0x7b, 0x73, 0x69, 0x7a, 0x65, 0x7d, 0x12, 0x7e, 0x0a, 0x13, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x43, 0x61, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x56, 0x31, - 0x12, 0x25, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x43, 0x61, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x56, 0x31, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x43, 0x61, 0x72, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x3a, 0x01, 0x2a, 0x22, 0x0d, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x63, 0x61, 0x72, 0x65, 0x2f, 0x6e, 0x65, 0x77, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, - 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, 0x56, 0x31, 0x12, 0x20, 0x2e, 0x70, 0x6c, + 0x73, 0x22, 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2f, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x56, 0x31, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x32, 0x81, 0x0d, 0x0a, + 0x09, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x41, 0x50, 0x49, 0x12, 0x97, 0x01, 0x0a, 0x18, 0x47, + 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x43, 0x61, 0x72, 0x65, + 0x52, 0x75, 0x6c, 0x65, 0x73, 0x56, 0x31, 0x12, 0x2a, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x57, 0x69, 0x74, + 0x68, 0x43, 0x61, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x43, 0x61, 0x72, + 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x63, 0x61, 0x72, 0x65, 0x2f, 0x7b, 0x70, 0x61, 0x67, 0x65, 0x7d, 0x2f, 0x7b, 0x73, + 0x69, 0x7a, 0x65, 0x7d, 0x12, 0x7e, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, + 0x77, 0x43, 0x61, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x56, 0x31, 0x12, 0x25, 0x2e, 0x70, 0x6c, + 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, + 0x77, 0x43, 0x61, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x43, 0x61, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, + 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x12, 0x3a, 0x01, 0x2a, 0x22, 0x0d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x72, 0x65, + 0x2f, 0x6e, 0x65, 0x77, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, + 0x42, 0x79, 0x49, 0x64, 0x56, 0x31, 0x12, 0x20, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, 0x56, + 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x42, 0x79, 0x49, + 0x64, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, + 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x6a, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x65, + 0x52, 0x75, 0x6c, 0x65, 0x56, 0x31, 0x12, 0x1f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x56, 0x31, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x56, + 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x72, 0x65, 0x2f, 0x7b, 0x69, 0x64, + 0x7d, 0x12, 0x6e, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x74, + 0x56, 0x31, 0x12, 0x1f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x56, 0x31, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x3a, 0x01, 0x2a, + 0x22, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x64, + 0x64, 0x12, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x46, + 0x6f, 0x72, 0x54, 0x72, 0x61, 0x64, 0x65, 0x56, 0x31, 0x12, 0x25, 0x2e, 0x70, 0x6c, 0x61, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x46, + 0x6f, 0x72, 0x54, 0x72, 0x61, 0x64, 0x65, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x26, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x61, 0x64, 0x65, 0x56, 0x31, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, + 0x12, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x7d, 0x12, 0x79, 0x0a, 0x0b, + 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x12, 0x1d, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, - 0x42, 0x79, 0x49, 0x64, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, - 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, - 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, - 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x6a, 0x0a, 0x0d, 0x47, 0x65, - 0x74, 0x43, 0x61, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x56, 0x31, 0x12, 0x1f, 0x2e, 0x70, 0x6c, - 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x65, 0x52, - 0x75, 0x6c, 0x65, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, - 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x65, - 0x52, 0x75, 0x6c, 0x65, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x72, - 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x6e, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x56, 0x31, 0x12, 0x1f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x56, - 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x74, - 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x14, 0x3a, 0x01, 0x2a, 0x22, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x6e, - 0x74, 0x73, 0x2f, 0x61, 0x64, 0x64, 0x12, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x6c, - 0x61, 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x61, 0x64, 0x65, 0x56, 0x31, 0x12, 0x25, - 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, - 0x61, 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x61, 0x64, 0x65, 0x56, 0x31, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x6e, - 0x74, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x7d, 0x12, 0x79, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, - 0x12, 0x1d, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1e, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, - 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x67, 0x65, 0x7d, 0x2f, 0x7b, - 0x73, 0x69, 0x7a, 0x65, 0x7d, 0x2f, 0x7b, 0x73, 0x6f, 0x72, 0x74, 0x7d, 0x12, 0x65, 0x0a, 0x0a, - 0x42, 0x75, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x56, 0x31, 0x12, 0x1c, 0x2e, 0x70, 0x6c, 0x61, - 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x56, - 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x56, 0x31, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x3a, - 0x01, 0x2a, 0x22, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2f, - 0x62, 0x75, 0x79, 0x12, 0x83, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x67, 0x68, - 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x12, 0x23, 0x2e, 0x70, 0x6c, 0x61, 0x6e, + 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x6c, 0x61, + 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, + 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x6e, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x67, 0x65, 0x7d, 0x2f, 0x7b, 0x73, 0x69, 0x7a, 0x65, 0x7d, + 0x2f, 0x7b, 0x73, 0x6f, 0x72, 0x74, 0x7d, 0x12, 0x65, 0x0a, 0x0a, 0x42, 0x75, 0x79, 0x50, 0x6c, + 0x61, 0x6e, 0x74, 0x56, 0x31, 0x12, 0x1c, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x42, 0x75, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x42, 0x75, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x3a, 0x01, 0x2a, 0x22, 0x0f, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x62, 0x75, 0x79, 0x12, 0x83, + 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x50, 0x6c, 0x61, 0x6e, + 0x74, 0x73, 0x56, 0x31, 0x12, 0x23, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, + 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x50, - 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, - 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, - 0x75, 0x67, 0x68, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, - 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x62, 0x75, 0x79, - 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x11, 0x47, 0x65, - 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x12, - 0x23, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x72, 0x61, 0x64, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, - 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x6e, - 0x74, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x7d, 0x12, 0x83, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, - 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x12, 0x23, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, + 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, 0x18, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x62, 0x75, 0x79, 0x2f, 0x7b, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x12, 0x23, 0x2e, 0x70, 0x6c, 0x61, + 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x64, + 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x24, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x64, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, + 0x22, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x7d, 0x12, 0x83, 0x01, 0x0a, + 0x11, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, + 0x56, 0x31, 0x12, 0x23, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x6c, 0x61, - 0x6e, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, - 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x2f, 0x7b, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x7d, 0x12, 0x8a, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x12, - 0x25, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x50, 0x6c, - 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, - 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2f, 0x7b, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x7d, 0x42, 0x15, 0x5a, 0x13, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x76, - 0x31, 0x3b, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x6e, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x6e, + 0x74, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x7d, 0x12, 0x8a, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x12, 0x25, 0x2e, 0x70, 0x6c, 0x61, + 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x56, + 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1e, 0x12, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x7d, 0x12, + 0x7f, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x73, 0x56, 0x31, 0x12, 0x21, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x56, 0x31, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, + 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x42, 0x15, 0x5a, 0x13, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x70, 0x6c, + 0x61, 0x6e, 0x74, 0x73, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2548,7 +2641,7 @@ func file_plants_v1_plants_proto_rawDescGZIP() []byte { return file_plants_v1_plants_proto_rawDescData } -var file_plants_v1_plants_proto_msgTypes = make([]protoimpl.MessageInfo, 34) +var file_plants_v1_plants_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_plants_v1_plants_proto_goTypes = []any{ (*Filter)(nil), // 0: plants.v1.Filter (*CreatePlantV1Request)(nil), // 1: plants.v1.CreatePlantV1Request @@ -2578,34 +2671,36 @@ var file_plants_v1_plants_proto_goTypes = []any{ (*GetActivePlantsV1Response)(nil), // 25: plants.v1.GetActivePlantsV1Response (*GetArchivedPlantsV1Request)(nil), // 26: plants.v1.GetArchivedPlantsV1Request (*GetArchivedPlantsV1Response)(nil), // 27: plants.v1.GetArchivedPlantsV1Response - (*CareRule_User)(nil), // 28: plants.v1.CareRule.User - (*GetPlantsWithCareRulesV1Request_Filter)(nil), // 29: plants.v1.GetPlantsWithCareRulesV1Request.Filter - (*GetPlantsWithCareRulesV1Response_PlantInfo)(nil), // 30: plants.v1.GetPlantsWithCareRulesV1Response.PlantInfo - (*GetPlantsForTradeV1Response_PlantInfo)(nil), // 31: plants.v1.GetPlantsForTradeV1Response.PlantInfo - (*GetPlantByIdV1Response_PlantInfo)(nil), // 32: plants.v1.GetPlantByIdV1Response.PlantInfo - (*GetPlantByIdV1Response_User)(nil), // 33: plants.v1.GetPlantByIdV1Response.User - (*timestamppb.Timestamp)(nil), // 34: google.protobuf.Timestamp + (*GetPlantTypesV1Request)(nil), // 28: plants.v1.GetPlantTypesV1Request + (*GetPlantTypesV1Response)(nil), // 29: plants.v1.GetPlantTypesV1Response + (*CareRule_User)(nil), // 30: plants.v1.CareRule.User + (*GetPlantsWithCareRulesV1Request_Filter)(nil), // 31: plants.v1.GetPlantsWithCareRulesV1Request.Filter + (*GetPlantsWithCareRulesV1Response_PlantInfo)(nil), // 32: plants.v1.GetPlantsWithCareRulesV1Response.PlantInfo + (*GetPlantsForTradeV1Response_PlantInfo)(nil), // 33: plants.v1.GetPlantsForTradeV1Response.PlantInfo + (*GetPlantByIdV1Response_PlantInfo)(nil), // 34: plants.v1.GetPlantByIdV1Response.PlantInfo + (*GetPlantByIdV1Response_User)(nil), // 35: plants.v1.GetPlantByIdV1Response.User + (*timestamp.Timestamp)(nil), // 36: google.protobuf.Timestamp } var file_plants_v1_plants_proto_depIdxs = []int32{ 0, // 0: plants.v1.GetPlantsV1Request.filter:type_name -> plants.v1.Filter 23, // 1: plants.v1.GetPlantsV1Response.plants:type_name -> plants.v1.Plant 7, // 2: plants.v1.GetCareRuleV1Response.careRules:type_name -> plants.v1.CareRule - 28, // 3: plants.v1.CareRule.user:type_name -> plants.v1.CareRule.User - 34, // 4: plants.v1.CareRule.createdAt:type_name -> google.protobuf.Timestamp - 29, // 5: plants.v1.GetPlantsWithCareRulesV1Request.filter:type_name -> plants.v1.GetPlantsWithCareRulesV1Request.Filter - 30, // 6: plants.v1.GetPlantsWithCareRulesV1Response.plants:type_name -> plants.v1.GetPlantsWithCareRulesV1Response.PlantInfo - 31, // 7: plants.v1.GetPlantsForTradeV1Response.plants:type_name -> plants.v1.GetPlantsForTradeV1Response.PlantInfo - 32, // 8: plants.v1.GetPlantByIdV1Response.plant:type_name -> plants.v1.GetPlantByIdV1Response.PlantInfo - 33, // 9: plants.v1.GetPlantByIdV1Response.user:type_name -> plants.v1.GetPlantByIdV1Response.User + 30, // 3: plants.v1.CareRule.user:type_name -> plants.v1.CareRule.User + 36, // 4: plants.v1.CareRule.createdAt:type_name -> google.protobuf.Timestamp + 31, // 5: plants.v1.GetPlantsWithCareRulesV1Request.filter:type_name -> plants.v1.GetPlantsWithCareRulesV1Request.Filter + 32, // 6: plants.v1.GetPlantsWithCareRulesV1Response.plants:type_name -> plants.v1.GetPlantsWithCareRulesV1Response.PlantInfo + 33, // 7: plants.v1.GetPlantsForTradeV1Response.plants:type_name -> plants.v1.GetPlantsForTradeV1Response.PlantInfo + 34, // 8: plants.v1.GetPlantByIdV1Response.plant:type_name -> plants.v1.GetPlantByIdV1Response.PlantInfo + 35, // 9: plants.v1.GetPlantByIdV1Response.user:type_name -> plants.v1.GetPlantByIdV1Response.User 0, // 10: plants.v1.GetBoughtPlantsV1Request.filter:type_name -> plants.v1.Filter 23, // 11: plants.v1.GetBoughtPlantsV1Response.plants:type_name -> plants.v1.Plant 0, // 12: plants.v1.GetTradedPlantsV1Request.filter:type_name -> plants.v1.Filter 23, // 13: plants.v1.GetTradedPlantsV1Response.plants:type_name -> plants.v1.Plant - 34, // 14: plants.v1.Plant.createdAt:type_name -> google.protobuf.Timestamp + 36, // 14: plants.v1.Plant.createdAt:type_name -> google.protobuf.Timestamp 23, // 15: plants.v1.GetActivePlantsV1Response.plants:type_name -> plants.v1.Plant 23, // 16: plants.v1.GetArchivedPlantsV1Response.plants:type_name -> plants.v1.Plant - 34, // 17: plants.v1.GetPlantsForTradeV1Response.PlantInfo.createdAt:type_name -> google.protobuf.Timestamp - 34, // 18: plants.v1.GetPlantByIdV1Response.PlantInfo.createdAt:type_name -> google.protobuf.Timestamp + 36, // 17: plants.v1.GetPlantsForTradeV1Response.PlantInfo.createdAt:type_name -> google.protobuf.Timestamp + 36, // 18: plants.v1.GetPlantByIdV1Response.PlantInfo.createdAt:type_name -> google.protobuf.Timestamp 10, // 19: plants.v1.PlantsAPI.GetPlantsWithCareRulesV1:input_type -> plants.v1.GetPlantsWithCareRulesV1Request 8, // 20: plants.v1.PlantsAPI.CreateNewCareRuleV1:input_type -> plants.v1.CreateNewCareRuleV1Request 15, // 21: plants.v1.PlantsAPI.GetPlantByIdV1:input_type -> plants.v1.GetPlantByIdV1Request @@ -2618,20 +2713,22 @@ var file_plants_v1_plants_proto_depIdxs = []int32{ 21, // 28: plants.v1.PlantsAPI.GetTradedPlantsV1:input_type -> plants.v1.GetTradedPlantsV1Request 24, // 29: plants.v1.PlantsAPI.GetActivePlantsV1:input_type -> plants.v1.GetActivePlantsV1Request 26, // 30: plants.v1.PlantsAPI.GetArchivedPlantsV1:input_type -> plants.v1.GetArchivedPlantsV1Request - 11, // 31: plants.v1.PlantsAPI.GetPlantsWithCareRulesV1:output_type -> plants.v1.GetPlantsWithCareRulesV1Response - 9, // 32: plants.v1.PlantsAPI.CreateNewCareRuleV1:output_type -> plants.v1.CreateNewCareRuleV1Response - 16, // 33: plants.v1.PlantsAPI.GetPlantByIdV1:output_type -> plants.v1.GetPlantByIdV1Response - 6, // 34: plants.v1.PlantsAPI.GetCareRuleV1:output_type -> plants.v1.GetCareRuleV1Response - 2, // 35: plants.v1.PlantsAPI.CreatePlantV1:output_type -> plants.v1.CreatePlantV1Response - 13, // 36: plants.v1.PlantsAPI.GetPlantsForTradeV1:output_type -> plants.v1.GetPlantsForTradeV1Response - 4, // 37: plants.v1.PlantsAPI.GetPlantsV1:output_type -> plants.v1.GetPlantsV1Response - 18, // 38: plants.v1.PlantsAPI.BuyPlantV1:output_type -> plants.v1.BuyPlantV1Response - 20, // 39: plants.v1.PlantsAPI.GetBoughtPlantsV1:output_type -> plants.v1.GetBoughtPlantsV1Response - 22, // 40: plants.v1.PlantsAPI.GetTradedPlantsV1:output_type -> plants.v1.GetTradedPlantsV1Response - 25, // 41: plants.v1.PlantsAPI.GetActivePlantsV1:output_type -> plants.v1.GetActivePlantsV1Response - 27, // 42: plants.v1.PlantsAPI.GetArchivedPlantsV1:output_type -> plants.v1.GetArchivedPlantsV1Response - 31, // [31:43] is the sub-list for method output_type - 19, // [19:31] is the sub-list for method input_type + 28, // 31: plants.v1.PlantsAPI.ListPlantTypesV1:input_type -> plants.v1.GetPlantTypesV1Request + 11, // 32: plants.v1.PlantsAPI.GetPlantsWithCareRulesV1:output_type -> plants.v1.GetPlantsWithCareRulesV1Response + 9, // 33: plants.v1.PlantsAPI.CreateNewCareRuleV1:output_type -> plants.v1.CreateNewCareRuleV1Response + 16, // 34: plants.v1.PlantsAPI.GetPlantByIdV1:output_type -> plants.v1.GetPlantByIdV1Response + 6, // 35: plants.v1.PlantsAPI.GetCareRuleV1:output_type -> plants.v1.GetCareRuleV1Response + 2, // 36: plants.v1.PlantsAPI.CreatePlantV1:output_type -> plants.v1.CreatePlantV1Response + 13, // 37: plants.v1.PlantsAPI.GetPlantsForTradeV1:output_type -> plants.v1.GetPlantsForTradeV1Response + 4, // 38: plants.v1.PlantsAPI.GetPlantsV1:output_type -> plants.v1.GetPlantsV1Response + 18, // 39: plants.v1.PlantsAPI.BuyPlantV1:output_type -> plants.v1.BuyPlantV1Response + 20, // 40: plants.v1.PlantsAPI.GetBoughtPlantsV1:output_type -> plants.v1.GetBoughtPlantsV1Response + 22, // 41: plants.v1.PlantsAPI.GetTradedPlantsV1:output_type -> plants.v1.GetTradedPlantsV1Response + 25, // 42: plants.v1.PlantsAPI.GetActivePlantsV1:output_type -> plants.v1.GetActivePlantsV1Response + 27, // 43: plants.v1.PlantsAPI.GetArchivedPlantsV1:output_type -> plants.v1.GetArchivedPlantsV1Response + 29, // 44: plants.v1.PlantsAPI.ListPlantTypesV1:output_type -> plants.v1.GetPlantTypesV1Response + 32, // [32:45] is the sub-list for method output_type + 19, // [19:32] is the sub-list for method input_type 19, // [19:19] is the sub-list for extension type_name 19, // [19:19] is the sub-list for extension extendee 0, // [0:19] is the sub-list for field type_name @@ -2648,7 +2745,7 @@ func file_plants_v1_plants_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_plants_v1_plants_proto_rawDesc, NumEnums: 0, - NumMessages: 34, + NumMessages: 36, NumExtensions: 0, NumServices: 1, }, diff --git a/server/internal/pkg/pb/plants/v1/plants.pb.gw.go b/server/internal/pkg/pb/plants/v1/plants.pb.gw.go index 36be6c8..1f8b532 100644 --- a/server/internal/pkg/pb/plants/v1/plants.pb.gw.go +++ b/server/internal/pkg/pb/plants/v1/plants.pb.gw.go @@ -751,6 +751,24 @@ func local_request_PlantsAPI_GetArchivedPlantsV1_0(ctx context.Context, marshale } +func request_PlantsAPI_ListPlantTypesV1_0(ctx context.Context, marshaler runtime.Marshaler, client PlantsAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetPlantTypesV1Request + var metadata runtime.ServerMetadata + + msg, err := client.ListPlantTypesV1(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_PlantsAPI_ListPlantTypesV1_0(ctx context.Context, marshaler runtime.Marshaler, server PlantsAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetPlantTypesV1Request + var metadata runtime.ServerMetadata + + msg, err := server.ListPlantTypesV1(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterPlantsAPIHandlerServer registers the http handlers for service PlantsAPI to "mux". // UnaryRPC :call PlantsAPIServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -1033,6 +1051,29 @@ func RegisterPlantsAPIHandlerServer(ctx context.Context, mux *runtime.ServeMux, }) + mux.Handle("GET", pattern_PlantsAPI_ListPlantTypesV1_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_PlantsAPI_ListPlantTypesV1_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_PlantsAPI_ListPlantTypesV1_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1314,6 +1355,26 @@ func RegisterPlantsAPIHandlerClient(ctx context.Context, mux *runtime.ServeMux, }) + mux.Handle("GET", pattern_PlantsAPI_ListPlantTypesV1_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_PlantsAPI_ListPlantTypesV1_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_PlantsAPI_ListPlantTypesV1_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1341,6 +1402,8 @@ var ( pattern_PlantsAPI_GetActivePlantsV1_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "plants", "active", "userId"}, "", runtime.AssumeColonVerbOpt(true))) pattern_PlantsAPI_GetArchivedPlantsV1_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "plants", "archive", "userId"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_PlantsAPI_ListPlantTypesV1_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "plants", "types", "typesArray"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( @@ -1367,4 +1430,6 @@ var ( forward_PlantsAPI_GetActivePlantsV1_0 = runtime.ForwardResponseMessage forward_PlantsAPI_GetArchivedPlantsV1_0 = runtime.ForwardResponseMessage + + forward_PlantsAPI_ListPlantTypesV1_0 = runtime.ForwardResponseMessage ) diff --git a/server/internal/pkg/pb/plants/v1/plants_grpc.pb.go b/server/internal/pkg/pb/plants/v1/plants_grpc.pb.go index 5426815..0602b8d 100644 --- a/server/internal/pkg/pb/plants/v1/plants_grpc.pb.go +++ b/server/internal/pkg/pb/plants/v1/plants_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.29.0--rc2 +// - protoc v3.6.1 // source: plants/v1/plants.proto package plants_v1 @@ -31,6 +31,7 @@ const ( PlantsAPI_GetTradedPlantsV1_FullMethodName = "/plants.v1.PlantsAPI/GetTradedPlantsV1" PlantsAPI_GetActivePlantsV1_FullMethodName = "/plants.v1.PlantsAPI/GetActivePlantsV1" PlantsAPI_GetArchivedPlantsV1_FullMethodName = "/plants.v1.PlantsAPI/GetArchivedPlantsV1" + PlantsAPI_ListPlantTypesV1_FullMethodName = "/plants.v1.PlantsAPI/ListPlantTypesV1" ) // PlantsAPIClient is the client API for PlantsAPI service. @@ -49,6 +50,7 @@ type PlantsAPIClient interface { GetTradedPlantsV1(ctx context.Context, in *GetTradedPlantsV1Request, opts ...grpc.CallOption) (*GetTradedPlantsV1Response, error) GetActivePlantsV1(ctx context.Context, in *GetActivePlantsV1Request, opts ...grpc.CallOption) (*GetActivePlantsV1Response, error) GetArchivedPlantsV1(ctx context.Context, in *GetArchivedPlantsV1Request, opts ...grpc.CallOption) (*GetArchivedPlantsV1Response, error) + ListPlantTypesV1(ctx context.Context, in *GetPlantTypesV1Request, opts ...grpc.CallOption) (*GetPlantTypesV1Response, error) } type plantsAPIClient struct { @@ -179,6 +181,16 @@ func (c *plantsAPIClient) GetArchivedPlantsV1(ctx context.Context, in *GetArchiv return out, nil } +func (c *plantsAPIClient) ListPlantTypesV1(ctx context.Context, in *GetPlantTypesV1Request, opts ...grpc.CallOption) (*GetPlantTypesV1Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetPlantTypesV1Response) + err := c.cc.Invoke(ctx, PlantsAPI_ListPlantTypesV1_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // PlantsAPIServer is the server API for PlantsAPI service. // All implementations must embed UnimplementedPlantsAPIServer // for forward compatibility. @@ -195,6 +207,7 @@ type PlantsAPIServer interface { GetTradedPlantsV1(context.Context, *GetTradedPlantsV1Request) (*GetTradedPlantsV1Response, error) GetActivePlantsV1(context.Context, *GetActivePlantsV1Request) (*GetActivePlantsV1Response, error) GetArchivedPlantsV1(context.Context, *GetArchivedPlantsV1Request) (*GetArchivedPlantsV1Response, error) + ListPlantTypesV1(context.Context, *GetPlantTypesV1Request) (*GetPlantTypesV1Response, error) mustEmbedUnimplementedPlantsAPIServer() } @@ -241,6 +254,9 @@ func (UnimplementedPlantsAPIServer) GetActivePlantsV1(context.Context, *GetActiv func (UnimplementedPlantsAPIServer) GetArchivedPlantsV1(context.Context, *GetArchivedPlantsV1Request) (*GetArchivedPlantsV1Response, error) { return nil, status.Errorf(codes.Unimplemented, "method GetArchivedPlantsV1 not implemented") } +func (UnimplementedPlantsAPIServer) ListPlantTypesV1(context.Context, *GetPlantTypesV1Request) (*GetPlantTypesV1Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListPlantTypesV1 not implemented") +} func (UnimplementedPlantsAPIServer) mustEmbedUnimplementedPlantsAPIServer() {} func (UnimplementedPlantsAPIServer) testEmbeddedByValue() {} @@ -478,6 +494,24 @@ func _PlantsAPI_GetArchivedPlantsV1_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _PlantsAPI_ListPlantTypesV1_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPlantTypesV1Request) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PlantsAPIServer).ListPlantTypesV1(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: PlantsAPI_ListPlantTypesV1_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PlantsAPIServer).ListPlantTypesV1(ctx, req.(*GetPlantTypesV1Request)) + } + return interceptor(ctx, in, info, handler) +} + // PlantsAPI_ServiceDesc is the grpc.ServiceDesc for PlantsAPI service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -533,6 +567,10 @@ var PlantsAPI_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetArchivedPlantsV1", Handler: _PlantsAPI_GetArchivedPlantsV1_Handler, }, + { + MethodName: "ListPlantTypesV1", + Handler: _PlantsAPI_ListPlantTypesV1_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "plants/v1/plants.proto", diff --git a/server/internal/pkg/pb/stats/v1/stats.pb.go b/server/internal/pkg/pb/stats/v1/stats.pb.go index 089113f..c72d721 100644 --- a/server/internal/pkg/pb/stats/v1/stats.pb.go +++ b/server/internal/pkg/pb/stats/v1/stats.pb.go @@ -1,16 +1,16 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 -// protoc v5.29.0--rc2 +// protoc-gen-go v1.35.2 +// protoc v3.6.1 // source: stats/v1/stats.proto package stats_v1 import ( + timestamp "github.com/golang/protobuf/ptypes/timestamp" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" ) @@ -27,7 +27,9 @@ type GetPlantsStatsV1Request struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Filter *TimeFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` + Filter *TimeFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` + Type []string `protobuf:"bytes,2,rep,name=type,proto3" json:"type,omitempty"` + LightCondition []string `protobuf:"bytes,3,rep,name=lightCondition,proto3" json:"lightCondition,omitempty"` } func (x *GetPlantsStatsV1Request) Reset() { @@ -67,6 +69,20 @@ func (x *GetPlantsStatsV1Request) GetFilter() *TimeFilter { return nil } +func (x *GetPlantsStatsV1Request) GetType() []string { + if x != nil { + return x.Type + } + return nil +} + +func (x *GetPlantsStatsV1Request) GetLightCondition() []string { + if x != nil { + return x.LightCondition + } + return nil +} + type GetPlantsStatsV1Response struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -419,8 +435,8 @@ type TimeFilter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TimeFrom *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timeFrom,proto3" json:"timeFrom,omitempty"` - TimeTo *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=timeTo,proto3" json:"timeTo,omitempty"` + TimeFrom *timestamp.Timestamp `protobuf:"bytes,1,opt,name=timeFrom,proto3" json:"timeFrom,omitempty"` + TimeTo *timestamp.Timestamp `protobuf:"bytes,2,opt,name=timeTo,proto3" json:"timeTo,omitempty"` } func (x *TimeFilter) Reset() { @@ -453,14 +469,14 @@ func (*TimeFilter) Descriptor() ([]byte, []int) { return file_stats_v1_stats_proto_rawDescGZIP(), []int{8} } -func (x *TimeFilter) GetTimeFrom() *timestamppb.Timestamp { +func (x *TimeFilter) GetTimeFrom() *timestamp.Timestamp { if x != nil { return x.TimeFrom } return nil } -func (x *TimeFilter) GetTimeTo() *timestamppb.Timestamp { +func (x *TimeFilter) GetTimeTo() *timestamp.Timestamp { if x != nil { return x.TimeTo } @@ -525,8 +541,8 @@ type GetBuyStatsV1Response_StatsInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Date *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=date,proto3" json:"date,omitempty"` - Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` + Date *timestamp.Timestamp `protobuf:"bytes,1,opt,name=date,proto3" json:"date,omitempty"` + Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` } func (x *GetBuyStatsV1Response_StatsInfo) Reset() { @@ -559,7 +575,7 @@ func (*GetBuyStatsV1Response_StatsInfo) Descriptor() ([]byte, []int) { return file_stats_v1_stats_proto_rawDescGZIP(), []int{3, 0} } -func (x *GetBuyStatsV1Response_StatsInfo) GetDate() *timestamppb.Timestamp { +func (x *GetBuyStatsV1Response_StatsInfo) GetDate() *timestamp.Timestamp { if x != nil { return x.Date } @@ -578,9 +594,9 @@ type GetTradeStatsV1Response_StatsInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Date *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=date,proto3" json:"date,omitempty"` - Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` - Status int64 `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"` + Date *timestamp.Timestamp `protobuf:"bytes,1,opt,name=date,proto3" json:"date,omitempty"` + Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` + Status int64 `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"` } func (x *GetTradeStatsV1Response_StatsInfo) Reset() { @@ -613,7 +629,7 @@ func (*GetTradeStatsV1Response_StatsInfo) Descriptor() ([]byte, []int) { return file_stats_v1_stats_proto_rawDescGZIP(), []int{5, 0} } -func (x *GetTradeStatsV1Response_StatsInfo) GetDate() *timestamppb.Timestamp { +func (x *GetTradeStatsV1Response_StatsInfo) GetDate() *timestamp.Timestamp { if x != nil { return x.Date } @@ -639,8 +655,8 @@ type GetAdsStatsV1Response_StatsInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Date *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=date,proto3" json:"date,omitempty"` - Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` + Date *timestamp.Timestamp `protobuf:"bytes,1,opt,name=date,proto3" json:"date,omitempty"` + Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` } func (x *GetAdsStatsV1Response_StatsInfo) Reset() { @@ -673,7 +689,7 @@ func (*GetAdsStatsV1Response_StatsInfo) Descriptor() ([]byte, []int) { return file_stats_v1_stats_proto_rawDescGZIP(), []int{7, 0} } -func (x *GetAdsStatsV1Response_StatsInfo) GetDate() *timestamppb.Timestamp { +func (x *GetAdsStatsV1Response_StatsInfo) GetDate() *timestamp.Timestamp { if x != nil { return x.Date } @@ -696,113 +712,117 @@ var file_stats_v1_stats_proto_rawDesc = []byte{ 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0x47, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xb1, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, - 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x1a, - 0x3b, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x44, 0x0a, 0x14, - 0x47, 0x65, 0x74, 0x42, 0x75, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x22, 0xc1, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x75, 0x79, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x42, 0x75, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x1a, 0x51, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x46, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, - 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xdd, - 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x1a, 0x69, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x44, - 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x22, 0xc1, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x64, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, + 0x83, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, + 0x0e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb1, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, + 0x6e, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x3b, 0x0a, 0x09, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x44, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x42, 0x75, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, + 0xc1, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x75, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, + 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x3f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, + 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x1a, 0x51, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x46, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xdd, 0x01, 0x0a, 0x17, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x41, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x1a, 0x69, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x44, 0x0a, 0x14, 0x47, + 0x65, 0x74, 0x41, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x22, 0xc1, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x1a, 0x51, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x51, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x78, 0x0a, 0x0a, 0x54, 0x69, 0x6d, 0x65, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, - 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x32, - 0x0a, 0x06, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x74, 0x69, 0x6d, 0x65, - 0x54, 0x6f, 0x32, 0xd2, 0x03, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x73, 0x41, 0x50, 0x49, 0x12, - 0x77, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x56, 0x31, 0x12, 0x21, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x78, 0x0a, 0x0a, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x32, 0x0a, 0x06, 0x74, + 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x32, + 0xd2, 0x03, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x73, 0x41, 0x50, 0x49, 0x12, 0x77, 0x0a, 0x10, + 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, + 0x12, 0x21, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, + 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x6b, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x42, - 0x75, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x12, 0x1e, 0x2e, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x13, 0x3a, 0x01, 0x2a, 0x22, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x2f, 0x62, 0x75, 0x79, 0x12, 0x73, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x12, 0x20, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x6b, 0x0a, 0x0d, 0x47, 0x65, - 0x74, 0x41, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x12, 0x1e, 0x2e, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x73, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x73, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x13, 0x3a, 0x01, 0x2a, 0x22, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x2f, 0x61, 0x64, 0x73, 0x42, 0x13, 0x5a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, + 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x70, + 0x6c, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x6b, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x42, 0x75, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x12, 0x1e, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x3a, + 0x01, 0x2a, 0x22, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x62, + 0x75, 0x79, 0x12, 0x73, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x56, 0x31, 0x12, 0x20, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x56, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x2f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x6b, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x64, + 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, 0x31, 0x12, 0x1e, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, + 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x56, + 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x13, 0x3a, 0x01, 0x2a, 0x22, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x2f, 0x61, 0x64, 0x73, 0x42, 0x13, 0x5a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x76, 0x31, + 0x3b, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -832,7 +852,7 @@ var file_stats_v1_stats_proto_goTypes = []any{ (*GetBuyStatsV1Response_StatsInfo)(nil), // 10: stats.v1.GetBuyStatsV1Response.StatsInfo (*GetTradeStatsV1Response_StatsInfo)(nil), // 11: stats.v1.GetTradeStatsV1Response.StatsInfo (*GetAdsStatsV1Response_StatsInfo)(nil), // 12: stats.v1.GetAdsStatsV1Response.StatsInfo - (*timestamppb.Timestamp)(nil), // 13: google.protobuf.Timestamp + (*timestamp.Timestamp)(nil), // 13: google.protobuf.Timestamp } var file_stats_v1_stats_proto_depIdxs = []int32{ 8, // 0: stats.v1.GetPlantsStatsV1Request.filter:type_name -> stats.v1.TimeFilter diff --git a/server/internal/pkg/pb/stats/v1/stats_grpc.pb.go b/server/internal/pkg/pb/stats/v1/stats_grpc.pb.go index 9ad0e9e..ef72bb7 100644 --- a/server/internal/pkg/pb/stats/v1/stats_grpc.pb.go +++ b/server/internal/pkg/pb/stats/v1/stats_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.29.0--rc2 +// - protoc v3.6.1 // source: stats/v1/stats.proto package stats_v1 diff --git a/server/internal/pkg/pb/trades/v1/trades.pb.go b/server/internal/pkg/pb/trades/v1/trades.pb.go index 9a6e57e..f3e9b1f 100644 --- a/server/internal/pkg/pb/trades/v1/trades.pb.go +++ b/server/internal/pkg/pb/trades/v1/trades.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 -// protoc v5.29.0--rc2 +// protoc-gen-go v1.35.2 +// protoc v3.6.1 // source: trades/v1/trades.proto package trades_v1 diff --git a/server/internal/pkg/pb/trades/v1/trades_grpc.pb.go b/server/internal/pkg/pb/trades/v1/trades_grpc.pb.go index 3bee1bf..957fa1f 100644 --- a/server/internal/pkg/pb/trades/v1/trades_grpc.pb.go +++ b/server/internal/pkg/pb/trades/v1/trades_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.29.0--rc2 +// - protoc v3.6.1 // source: trades/v1/trades.proto package trades_v1 diff --git a/server/internal/pkg/pb/users/v1/users.pb.go b/server/internal/pkg/pb/users/v1/users.pb.go index ca1a1d1..ffb0a73 100644 --- a/server/internal/pkg/pb/users/v1/users.pb.go +++ b/server/internal/pkg/pb/users/v1/users.pb.go @@ -1,16 +1,16 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 -// protoc v5.29.0--rc2 +// protoc-gen-go v1.35.2 +// protoc v3.6.1 // source: users/v1/users.proto package users_v1 import ( + timestamp "github.com/golang/protobuf/ptypes/timestamp" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" ) @@ -548,14 +548,14 @@ type GetUserV1Response_User struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Photo string `protobuf:"bytes,1,opt,name=photo,proto3" json:"photo,omitempty"` - Surname string `protobuf:"bytes,2,opt,name=surname,proto3" json:"surname,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - FatherName string `protobuf:"bytes,4,opt,name=father_name,json=fatherName,proto3" json:"father_name,omitempty"` - PhoneNumber string `protobuf:"bytes,5,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` - Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` + Photo string `protobuf:"bytes,1,opt,name=photo,proto3" json:"photo,omitempty"` + Surname string `protobuf:"bytes,2,opt,name=surname,proto3" json:"surname,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + FatherName string `protobuf:"bytes,4,opt,name=father_name,json=fatherName,proto3" json:"father_name,omitempty"` + PhoneNumber string `protobuf:"bytes,5,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` + Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"` + CreatedAt *timestamp.Timestamp `protobuf:"bytes,7,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + UpdatedAt *timestamp.Timestamp `protobuf:"bytes,8,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` } func (x *GetUserV1Response_User) Reset() { @@ -630,14 +630,14 @@ func (x *GetUserV1Response_User) GetEmail() string { return "" } -func (x *GetUserV1Response_User) GetCreatedAt() *timestamppb.Timestamp { +func (x *GetUserV1Response_User) GetCreatedAt() *timestamp.Timestamp { if x != nil { return x.CreatedAt } return nil } -func (x *GetUserV1Response_User) GetUpdatedAt() *timestamppb.Timestamp { +func (x *GetUserV1Response_User) GetUpdatedAt() *timestamp.Timestamp { if x != nil { return x.UpdatedAt } @@ -775,7 +775,7 @@ var file_users_v1_users_proto_goTypes = []any{ (*UpdateUserV1Request)(nil), // 7: users.v1.UpdateUserV1Request (*UpdateUserV1Response)(nil), // 8: users.v1.UpdateUserV1Response (*GetUserV1Response_User)(nil), // 9: users.v1.GetUserV1Response.User - (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp + (*timestamp.Timestamp)(nil), // 10: google.protobuf.Timestamp } var file_users_v1_users_proto_depIdxs = []int32{ 0, // 0: users.v1.UserLoginV1Response.role:type_name -> users.v1.Role diff --git a/server/internal/pkg/pb/users/v1/users_grpc.pb.go b/server/internal/pkg/pb/users/v1/users_grpc.pb.go index ffb6fe5..0ab7748 100644 --- a/server/internal/pkg/pb/users/v1/users_grpc.pb.go +++ b/server/internal/pkg/pb/users/v1/users_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.29.0--rc2 +// - protoc v3.6.1 // source: users/v1/users.proto package users_v1 diff --git a/server/internal/storage/plants.go b/server/internal/storage/plants.go index 084dd4d..0517f6f 100644 --- a/server/internal/storage/plants.go +++ b/server/internal/storage/plants.go @@ -268,6 +268,54 @@ func (s *Storage) GetPlantsByUserId(ctx context.Context, userId string, isSold b return plants, nil } +func (s *Storage) GetTypes(ctx context.Context) ([]string, error) { + type Type struct { + Name string `bson:"type" json:"name"` + } + collection := s.DataBase.Collection("plants") + cur, err := collection.Aggregate(ctx, []bson.D{ + { + { + "$group", + bson.D{ + { + "_id", + "$type", + }, + }, + }, + }, + { + { + "$project", + bson.D{ + { + "_id", 0, + }, + { + "type", "$_id", + }, + }, + }, + }, + }) + if err != nil { + return nil, err + } + var ( + t Type + types []string + ) + + for cur.Next(ctx) { + if err = cur.Decode(&t); err != nil { + return nil, err + } + types = append(types, t.Name) + } + return types, nil +} + func parseSortType(isDesc bool) int8 { if isDesc { return -1 diff --git a/server/internal/storage/stats.go b/server/internal/storage/stats.go index e668edf..d5e411b 100644 --- a/server/internal/storage/stats.go +++ b/server/internal/storage/stats.go @@ -243,16 +243,29 @@ func (s *Storage) GetTradeStats(ctx context.Context, filter map[string]interface func (s *Storage) GetPlantsStats(ctx context.Context, filter map[string]interface{}) (*models.PlantsStats, error) { var stats models.PlantsStats collection := s.DataBase.Collection("plants") + fltr := bson.D{ + {"created_at", bson.D{ + {"$gte", filter["from"]}, + {"$lte", filter["to"]}, + }}, + } + if v, ok := filter["type"]; ok { + switch vt := v.(type) { + case []string: + fltr = append(fltr, createOrFilter("type", vt)...) + } + } + if v, ok := filter["light_condition"]; ok { + switch vt := v.(type) { + case []string: + fltr = append(fltr, createOrFilter("light_condition", vt)...) + } + } pipeline := []bson.D{ { { - Key: "$match", - Value: bson.D{ - {"created_at", bson.D{ - {"$gte", filter["from"]}, - {"$lte", filter["to"]}, - }}, - }, + Key: "$match", + Value: fltr, }, }, {