From d71da5accdfd8db8b8779bd88aea355a644b65b2 Mon Sep 17 00:00:00 2001 From: Arnaud Delcasse Date: Mon, 16 Jun 2025 13:01:16 +0200 Subject: [PATCH] new grpc functions --- handler/bookings.go | 19 +- handler/journeys.go | 5 +- main.go | 2 +- .../grpc/proto/gen/solidarity-transport.pb.go | 561 +++++++++++------- .../proto/gen/solidarity-transport_grpc.pb.go | 37 ++ servers/grpc/proto/solidarity-transport.proto | 12 +- servers/grpc/server/bookings.go | 26 +- servers/grpc/server/journeys.go | 2 - servers/grpc/transformers/journeys.go | 4 +- storage/memory.go | 8 +- storage/mongodb.go | 13 +- storage/storage.go | 3 +- 12 files changed, 472 insertions(+), 220 deletions(-) diff --git a/handler/bookings.go b/handler/bookings.go index ab45f61..510b6c7 100644 --- a/handler/bookings.go +++ b/handler/bookings.go @@ -9,7 +9,7 @@ import ( "github.com/rs/zerolog/log" ) -func (h Handler) BookDriverJourney(passengerid string, driverid string, journeyid string, returnWaitingDuration time.Duration, data map[string]any) (*types.Booking, error) { +func (h Handler) BookDriverJourney(passengerid string, driverid string, journeyid string, returnWaitingDuration time.Duration, priceAmount float64, priceCurrency string, data map[string]any) (*types.Booking, error) { journey, err := h.Storage.GetDriverJourney(journeyid) if err != nil { log.Error().Err(err).Msg("could not find driver journey") @@ -20,6 +20,11 @@ func (h Handler) BookDriverJourney(passengerid string, driverid string, journeyi return nil, errors.New("not authorized : journey id driver and driverid mismatch") } + journey.Price.Amount = priceAmount + journey.Price.Currency = priceCurrency + + log.Debug().Float64("Price", priceAmount).Any("journey", journey.Price).Msg("store booking") + booking := types.Booking{ Id: uuid.NewString(), GroupId: uuid.NewString(), @@ -72,8 +77,16 @@ func (h Handler) GetBooking(id string) (*types.Booking, error) { return booking, nil } -func (h Handler) UpdateBookingStatus(bookingid string, newStatus string) error { - if err := h.Storage.UpdateBookingStatus(bookingid, newStatus); err != nil { +func (h Handler) UpdateBooking(booking types.Booking) error { + if err := h.Storage.UpdateBooking(booking); err != nil { + log.Error().Err(err).Msg("could not update booking") + return err + } + return nil +} + +func (h Handler) UpdateBookingStatus(bookingid string, newStatus string, reason string) error { + if err := h.Storage.UpdateBookingStatus(bookingid, newStatus, reason); err != nil { log.Error().Err(err).Msg("could not update booking") return err } diff --git a/handler/journeys.go b/handler/journeys.go index 01bb1a4..f92b6e5 100644 --- a/handler/journeys.go +++ b/handler/journeys.go @@ -13,6 +13,7 @@ import ( ) func (h *Handler) GetDriverJourneys(departure *geojson.Feature, arrival *geojson.Feature, departureDate time.Time, noreturn bool) ([]*types.DriverJourney, error) { + log.Info().Time("departureDate", departureDate).Bool("noreturn", noreturn).Str("departure", departure.Properties.MustString("label")).Str("arrival", arrival.Properties.MustString("label")).Msg("calling GetDriverJourneys") minDistance := h.Config.GetInt64("parameters.limits.distance.min") maxDistance := h.Config.GetInt64("parameters.limits.distance.max") day := int(departureDate.Weekday()) @@ -27,7 +28,6 @@ func (h *Handler) GetDriverJourneys(departure *geojson.Feature, arrival *geojson } for _, a := range availabilities { - log.Debug().Any("availability", a).Msg("Availability found") if a.Address != nil { var route *routing.Route if noreturn { @@ -55,8 +55,6 @@ func (h *Handler) GetDriverJourneys(departure *geojson.Feature, arrival *geojson continue } - log.Debug().Any("route", route).Msg("debug route") - passengerDistance := int64(route.Legs[1].Distance) if !noreturn { passengerDistance = passengerDistance + int64(route.Legs[2].Distance) @@ -151,7 +149,6 @@ func (h Handler) ToggleDriverJourneyNoreturn(journeyid string) error { journey.DriverDistance = int64(route.Distance) journey.Duration = route.Legs[1].Duration } - log.Debug().Any("journey", journey).Msg("journey update") err = h.Storage.UpdateDriverJourney(*journey) return err diff --git a/main.go b/main.go index 8f2fcd0..cd52570 100644 --- a/main.go +++ b/main.go @@ -12,7 +12,7 @@ import ( ) func main() { - zerolog.TimeFieldFormat = zerolog.TimeFormatUnix + // zerolog.TimeFieldFormat = zerolog.TimeFormatUnix cfg, err := ReadConfig() if err != nil { panic(err) diff --git a/servers/grpc/proto/gen/solidarity-transport.pb.go b/servers/grpc/proto/gen/solidarity-transport.pb.go index 3367fa4..8fe5f51 100644 --- a/servers/grpc/proto/gen/solidarity-transport.pb.go +++ b/servers/grpc/proto/gen/solidarity-transport.pb.go @@ -648,7 +648,9 @@ type BookDriverJourneyRequest struct { DriverId string `protobuf:"bytes,2,opt,name=driver_id,json=driverId,proto3" json:"driver_id,omitempty"` DriverJourneyId string `protobuf:"bytes,3,opt,name=driver_journey_id,json=driverJourneyId,proto3" json:"driver_journey_id,omitempty"` ReturnWaitingDuration int64 `protobuf:"varint,4,opt,name=return_waiting_duration,json=returnWaitingDuration,proto3" json:"return_waiting_duration,omitempty"` - Data *structpb.Struct `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` + PriceAmount float64 `protobuf:"fixed64,5,opt,name=price_amount,json=priceAmount,proto3" json:"price_amount,omitempty"` + PriceCurrency string `protobuf:"bytes,6,opt,name=price_currency,json=priceCurrency,proto3" json:"price_currency,omitempty"` + Data *structpb.Struct `protobuf:"bytes,7,opt,name=data,proto3" json:"data,omitempty"` } func (x *BookDriverJourneyRequest) Reset() { @@ -711,6 +713,20 @@ func (x *BookDriverJourneyRequest) GetReturnWaitingDuration() int64 { return 0 } +func (x *BookDriverJourneyRequest) GetPriceAmount() float64 { + if x != nil { + return x.PriceAmount + } + return 0 +} + +func (x *BookDriverJourneyRequest) GetPriceCurrency() string { + if x != nil { + return x.PriceCurrency + } + return "" +} + func (x *BookDriverJourneyRequest) GetData() *structpb.Struct { if x != nil { return x.Data @@ -977,6 +993,91 @@ func (x *GetSolidarityTransportBookingResponse) GetBooking() *SolidarityTranspor return nil } +type UpdateSolidarityTransportBookingRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Booking *SolidarityTransportBooking `protobuf:"bytes,1,opt,name=booking,proto3" json:"booking,omitempty"` +} + +func (x *UpdateSolidarityTransportBookingRequest) Reset() { + *x = UpdateSolidarityTransportBookingRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_solidarity_transport_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateSolidarityTransportBookingRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateSolidarityTransportBookingRequest) ProtoMessage() {} + +func (x *UpdateSolidarityTransportBookingRequest) ProtoReflect() protoreflect.Message { + mi := &file_solidarity_transport_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateSolidarityTransportBookingRequest.ProtoReflect.Descriptor instead. +func (*UpdateSolidarityTransportBookingRequest) Descriptor() ([]byte, []int) { + return file_solidarity_transport_proto_rawDescGZIP(), []int{18} +} + +func (x *UpdateSolidarityTransportBookingRequest) GetBooking() *SolidarityTransportBooking { + if x != nil { + return x.Booking + } + return nil +} + +type UpdateSolidarityTransportBookingResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *UpdateSolidarityTransportBookingResponse) Reset() { + *x = UpdateSolidarityTransportBookingResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_solidarity_transport_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateSolidarityTransportBookingResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateSolidarityTransportBookingResponse) ProtoMessage() {} + +func (x *UpdateSolidarityTransportBookingResponse) ProtoReflect() protoreflect.Message { + mi := &file_solidarity_transport_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateSolidarityTransportBookingResponse.ProtoReflect.Descriptor instead. +func (*UpdateSolidarityTransportBookingResponse) Descriptor() ([]byte, []int) { + return file_solidarity_transport_proto_rawDescGZIP(), []int{19} +} + type UpdateSolidarityTransportBookingStatusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -984,12 +1085,13 @@ type UpdateSolidarityTransportBookingStatusRequest struct { BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId,proto3" json:"booking_id,omitempty"` NewStatus string `protobuf:"bytes,2,opt,name=new_status,json=newStatus,proto3" json:"new_status,omitempty"` + Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` } func (x *UpdateSolidarityTransportBookingStatusRequest) Reset() { *x = UpdateSolidarityTransportBookingStatusRequest{} if protoimpl.UnsafeEnabled { - mi := &file_solidarity_transport_proto_msgTypes[18] + mi := &file_solidarity_transport_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1002,7 +1104,7 @@ func (x *UpdateSolidarityTransportBookingStatusRequest) String() string { func (*UpdateSolidarityTransportBookingStatusRequest) ProtoMessage() {} func (x *UpdateSolidarityTransportBookingStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_solidarity_transport_proto_msgTypes[18] + mi := &file_solidarity_transport_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1015,7 +1117,7 @@ func (x *UpdateSolidarityTransportBookingStatusRequest) ProtoReflect() protorefl // Deprecated: Use UpdateSolidarityTransportBookingStatusRequest.ProtoReflect.Descriptor instead. func (*UpdateSolidarityTransportBookingStatusRequest) Descriptor() ([]byte, []int) { - return file_solidarity_transport_proto_rawDescGZIP(), []int{18} + return file_solidarity_transport_proto_rawDescGZIP(), []int{20} } func (x *UpdateSolidarityTransportBookingStatusRequest) GetBookingId() string { @@ -1032,6 +1134,13 @@ func (x *UpdateSolidarityTransportBookingStatusRequest) GetNewStatus() string { return "" } +func (x *UpdateSolidarityTransportBookingStatusRequest) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + type UpdateSolidarityTransportBookingStatusResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1041,7 +1150,7 @@ type UpdateSolidarityTransportBookingStatusResponse struct { func (x *UpdateSolidarityTransportBookingStatusResponse) Reset() { *x = UpdateSolidarityTransportBookingStatusResponse{} if protoimpl.UnsafeEnabled { - mi := &file_solidarity_transport_proto_msgTypes[19] + mi := &file_solidarity_transport_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1054,7 +1163,7 @@ func (x *UpdateSolidarityTransportBookingStatusResponse) String() string { func (*UpdateSolidarityTransportBookingStatusResponse) ProtoMessage() {} func (x *UpdateSolidarityTransportBookingStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_solidarity_transport_proto_msgTypes[19] + mi := &file_solidarity_transport_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1067,7 +1176,7 @@ func (x *UpdateSolidarityTransportBookingStatusResponse) ProtoReflect() protoref // Deprecated: Use UpdateSolidarityTransportBookingStatusResponse.ProtoReflect.Descriptor instead. func (*UpdateSolidarityTransportBookingStatusResponse) Descriptor() ([]byte, []int) { - return file_solidarity_transport_proto_rawDescGZIP(), []int{19} + return file_solidarity_transport_proto_rawDescGZIP(), []int{21} } type ToggleSolidarityTransportNoreturnRequest struct { @@ -1081,7 +1190,7 @@ type ToggleSolidarityTransportNoreturnRequest struct { func (x *ToggleSolidarityTransportNoreturnRequest) Reset() { *x = ToggleSolidarityTransportNoreturnRequest{} if protoimpl.UnsafeEnabled { - mi := &file_solidarity_transport_proto_msgTypes[20] + mi := &file_solidarity_transport_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1094,7 +1203,7 @@ func (x *ToggleSolidarityTransportNoreturnRequest) String() string { func (*ToggleSolidarityTransportNoreturnRequest) ProtoMessage() {} func (x *ToggleSolidarityTransportNoreturnRequest) ProtoReflect() protoreflect.Message { - mi := &file_solidarity_transport_proto_msgTypes[20] + mi := &file_solidarity_transport_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1107,7 +1216,7 @@ func (x *ToggleSolidarityTransportNoreturnRequest) ProtoReflect() protoreflect.M // Deprecated: Use ToggleSolidarityTransportNoreturnRequest.ProtoReflect.Descriptor instead. func (*ToggleSolidarityTransportNoreturnRequest) Descriptor() ([]byte, []int) { - return file_solidarity_transport_proto_rawDescGZIP(), []int{20} + return file_solidarity_transport_proto_rawDescGZIP(), []int{22} } func (x *ToggleSolidarityTransportNoreturnRequest) GetJourneyId() string { @@ -1126,7 +1235,7 @@ type ToggleSolidarityTransportNoreturnResponse struct { func (x *ToggleSolidarityTransportNoreturnResponse) Reset() { *x = ToggleSolidarityTransportNoreturnResponse{} if protoimpl.UnsafeEnabled { - mi := &file_solidarity_transport_proto_msgTypes[21] + mi := &file_solidarity_transport_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1139,7 +1248,7 @@ func (x *ToggleSolidarityTransportNoreturnResponse) String() string { func (*ToggleSolidarityTransportNoreturnResponse) ProtoMessage() {} func (x *ToggleSolidarityTransportNoreturnResponse) ProtoReflect() protoreflect.Message { - mi := &file_solidarity_transport_proto_msgTypes[21] + mi := &file_solidarity_transport_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1152,7 +1261,7 @@ func (x *ToggleSolidarityTransportNoreturnResponse) ProtoReflect() protoreflect. // Deprecated: Use ToggleSolidarityTransportNoreturnResponse.ProtoReflect.Descriptor instead. func (*ToggleSolidarityTransportNoreturnResponse) Descriptor() ([]byte, []int) { - return file_solidarity_transport_proto_rawDescGZIP(), []int{21} + return file_solidarity_transport_proto_rawDescGZIP(), []int{23} } var File_solidarity_transport_proto protoreflect.FileDescriptor @@ -1244,7 +1353,7 @@ var file_solidarity_transport_proto_rawDesc = []byte{ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x52, 0x0d, 0x64, 0x72, 0x69, 0x76, 0x65, - 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x22, 0xeb, 0x01, 0x0a, 0x18, 0x42, 0x6f, 0x6f, + 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x22, 0xb5, 0x02, 0x0a, 0x18, 0x42, 0x6f, 0x6f, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x73, @@ -1256,143 +1365,166 @@ var file_solidarity_transport_proto_rawDesc = []byte{ 0x64, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, - 0x67, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x52, 0x0a, 0x19, 0x42, 0x6f, 0x6f, 0x6b, 0x44, 0x72, - 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, - 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, - 0x67, 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x22, 0xd7, 0x01, 0x0a, 0x25, 0x47, - 0x65, 0x74, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 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, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, - 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 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, 0x07, 0x65, - 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x65, 0x6e, - 0x67, 0x65, 0x72, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x73, - 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x72, 0x69, 0x76, - 0x65, 0x72, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x72, 0x69, 0x76, - 0x65, 0x72, 0x69, 0x64, 0x22, 0x61, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x6c, 0x69, 0x64, - 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, - 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, - 0x0a, 0x08, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x62, - 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x36, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x53, 0x6f, - 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, - 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, - 0x5e, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x62, 0x6f, 0x6f, 0x6b, - 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x53, 0x6f, 0x6c, 0x69, + 0x67, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x69, + 0x63, 0x65, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x63, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x22, 0x52, 0x0a, 0x19, 0x42, 0x6f, 0x6f, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, + 0x75, 0x72, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, + 0x07, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x62, 0x6f, 0x6f, + 0x6b, 0x69, 0x6e, 0x67, 0x22, 0xd7, 0x01, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, - 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x22, - 0x6d, 0x0a, 0x2d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, - 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, - 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x30, - 0x0a, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, - 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, - 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x49, 0x0a, 0x28, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, - 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x49, 0x64, 0x22, 0x2b, 0x0a, 0x29, 0x54, - 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xc0, 0x09, 0x0a, 0x13, 0x53, 0x6f, 0x6c, + 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, + 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 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, 0x09, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, + 0x5f, 0x64, 0x61, 0x74, 0x65, 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, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, + 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x69, 0x64, 0x22, 0x61, + 0x0a, 0x26, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x62, 0x6f, 0x6f, 0x6b, + 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, - 0x12, 0x6d, 0x0a, 0x1c, 0x41, 0x64, 0x64, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, - 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x12, 0x24, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, - 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x72, 0x69, 0x76, - 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x73, 0x0a, 0x1e, 0x41, 0x64, 0x64, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, - 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x12, 0x26, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, - 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x41, 0x64, 0x64, 0x44, - 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, - 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, - 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, - 0x2e, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, - 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x1f, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, - 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x27, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, - 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x72, - 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x4c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, - 0x75, 0x72, 0x6e, 0x65, 0x79, 0x73, 0x12, 0x19, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, - 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1a, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, - 0x72, 0x6e, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x49, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, - 0x6e, 0x65, 0x79, 0x12, 0x18, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, - 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, - 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x11, 0x42, 0x6f, - 0x6f, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x12, - 0x19, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, - 0x6e, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x42, 0x6f, 0x6f, - 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x53, - 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, - 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x26, 0x2e, 0x47, 0x65, 0x74, - 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, + 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, + 0x73, 0x22, 0x36, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, - 0x1d, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x25, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x6c, 0x69, 0x64, - 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, - 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x8b, 0x01, 0x0a, 0x26, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, - 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, - 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2e, 0x2e, 0x55, 0x70, 0x64, + 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5e, 0x0a, 0x25, 0x47, 0x65, 0x74, + 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, + 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, + 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x22, 0x60, 0x0a, 0x27, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7c, 0x0a, - 0x21, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, - 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x12, 0x29, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, + 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, + 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, + 0x6e, 0x67, 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x22, 0x2a, 0x0a, 0x28, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x2d, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, + 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, + 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, + 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, + 0x30, 0x0a, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, + 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, + 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x49, 0x0a, 0x28, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x49, 0x64, 0x22, 0x2b, 0x0a, 0x29, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x4b, 0x5a, 0x49, 0x67, - 0x69, 0x74, 0x2e, 0x63, 0x6f, 0x6f, 0x70, 0x67, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x63, 0x6f, 0x6f, - 0x70, 0x67, 0x6f, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, - 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, - 0x74, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xbb, 0x0a, 0x0a, 0x13, 0x53, 0x6f, + 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, + 0x74, 0x12, 0x6d, 0x0a, 0x1c, 0x41, 0x64, 0x64, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, + 0x67, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x12, 0x24, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, + 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x72, 0x69, + 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x73, 0x0a, 0x1e, 0x41, 0x64, 0x64, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, + 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x12, 0x26, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, + 0x67, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x41, 0x64, 0x64, + 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, + 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, + 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, + 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x1f, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, + 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x27, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, + 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, + 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, + 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x73, 0x12, 0x19, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, + 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, + 0x75, 0x72, 0x6e, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x49, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, + 0x72, 0x6e, 0x65, 0x79, 0x12, 0x18, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, + 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, + 0x2e, 0x47, 0x65, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x11, 0x42, + 0x6f, 0x6f, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, + 0x12, 0x19, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, + 0x72, 0x6e, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x42, 0x6f, + 0x6f, 0x6b, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x1e, 0x47, 0x65, 0x74, + 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, + 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x26, 0x2e, 0x47, 0x65, + 0x74, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, + 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, + 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x12, + 0x25, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x6c, 0x69, + 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, + 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x79, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, + 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, + 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x6c, + 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, + 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, + 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8b, 0x01, 0x0a, 0x26, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, + 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, + 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, + 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, + 0x72, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7c, 0x0a, 0x21, 0x54, 0x6f, 0x67, + 0x67, 0x6c, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x12, 0x29, + 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, + 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x54, 0x6f, 0x67, 0x67, + 0x6c, 0x65, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x4b, 0x5a, 0x49, 0x67, 0x69, 0x74, 0x2e, 0x63, + 0x6f, 0x6f, 0x70, 0x67, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x63, 0x6f, 0x6f, 0x70, 0x67, 0x6f, 0x2d, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x72, + 0x69, 0x74, 0x79, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x67, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1407,7 +1539,7 @@ func file_solidarity_transport_proto_rawDescGZIP() []byte { return file_solidarity_transport_proto_rawDescData } -var file_solidarity_transport_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_solidarity_transport_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_solidarity_transport_proto_goTypes = []interface{}{ (*AddDriverRegularAvailabilityRequest)(nil), // 0: AddDriverRegularAvailabilityRequest (*AddDriverRegularAvailabilityResponse)(nil), // 1: AddDriverRegularAvailabilityResponse @@ -1427,59 +1559,64 @@ var file_solidarity_transport_proto_goTypes = []interface{}{ (*GetSolidarityTransportBookingsResponse)(nil), // 15: GetSolidarityTransportBookingsResponse (*GetSolidarityTransportBookingRequest)(nil), // 16: GetSolidarityTransportBookingRequest (*GetSolidarityTransportBookingResponse)(nil), // 17: GetSolidarityTransportBookingResponse - (*UpdateSolidarityTransportBookingStatusRequest)(nil), // 18: UpdateSolidarityTransportBookingStatusRequest - (*UpdateSolidarityTransportBookingStatusResponse)(nil), // 19: UpdateSolidarityTransportBookingStatusResponse - (*ToggleSolidarityTransportNoreturnRequest)(nil), // 20: ToggleSolidarityTransportNoreturnRequest - (*ToggleSolidarityTransportNoreturnResponse)(nil), // 21: ToggleSolidarityTransportNoreturnResponse - (*GeoJsonFeature)(nil), // 22: GeoJsonFeature - (*DriverRegularAvailability)(nil), // 23: DriverRegularAvailability - (*timestamppb.Timestamp)(nil), // 24: google.protobuf.Timestamp - (*SolidarityTransportDriverJourney)(nil), // 25: SolidarityTransportDriverJourney - (*structpb.Struct)(nil), // 26: google.protobuf.Struct - (*SolidarityTransportBooking)(nil), // 27: SolidarityTransportBooking + (*UpdateSolidarityTransportBookingRequest)(nil), // 18: UpdateSolidarityTransportBookingRequest + (*UpdateSolidarityTransportBookingResponse)(nil), // 19: UpdateSolidarityTransportBookingResponse + (*UpdateSolidarityTransportBookingStatusRequest)(nil), // 20: UpdateSolidarityTransportBookingStatusRequest + (*UpdateSolidarityTransportBookingStatusResponse)(nil), // 21: UpdateSolidarityTransportBookingStatusResponse + (*ToggleSolidarityTransportNoreturnRequest)(nil), // 22: ToggleSolidarityTransportNoreturnRequest + (*ToggleSolidarityTransportNoreturnResponse)(nil), // 23: ToggleSolidarityTransportNoreturnResponse + (*GeoJsonFeature)(nil), // 24: GeoJsonFeature + (*DriverRegularAvailability)(nil), // 25: DriverRegularAvailability + (*timestamppb.Timestamp)(nil), // 26: google.protobuf.Timestamp + (*SolidarityTransportDriverJourney)(nil), // 27: SolidarityTransportDriverJourney + (*structpb.Struct)(nil), // 28: google.protobuf.Struct + (*SolidarityTransportBooking)(nil), // 29: SolidarityTransportBooking } var file_solidarity_transport_proto_depIdxs = []int32{ - 22, // 0: AddDriverRegularAvailabilityRequest.address:type_name -> GeoJsonFeature - 23, // 1: AddDriverRegularAvailabilitiesRequest.availabilities:type_name -> DriverRegularAvailability - 23, // 2: GetDriverRegularAvailabilitiesResponse.results:type_name -> DriverRegularAvailability - 22, // 3: GetDriverJourneysRequest.departure:type_name -> GeoJsonFeature - 22, // 4: GetDriverJourneysRequest.arrival:type_name -> GeoJsonFeature - 24, // 5: GetDriverJourneysRequest.departure_date:type_name -> google.protobuf.Timestamp - 25, // 6: GetDriverJourneysResponse.driver_journeys:type_name -> SolidarityTransportDriverJourney - 25, // 7: GetDriverJourneyResponse.driver_journey:type_name -> SolidarityTransportDriverJourney - 26, // 8: BookDriverJourneyRequest.data:type_name -> google.protobuf.Struct - 27, // 9: BookDriverJourneyResponse.booking:type_name -> SolidarityTransportBooking - 24, // 10: GetSolidarityTransportBookingsRequest.start_date:type_name -> google.protobuf.Timestamp - 24, // 11: GetSolidarityTransportBookingsRequest.end_date:type_name -> google.protobuf.Timestamp - 27, // 12: GetSolidarityTransportBookingsResponse.bookings:type_name -> SolidarityTransportBooking - 27, // 13: GetSolidarityTransportBookingResponse.booking:type_name -> SolidarityTransportBooking - 0, // 14: SolidarityTransport.AddDriverRegularAvailability:input_type -> AddDriverRegularAvailabilityRequest - 2, // 15: SolidarityTransport.AddDriverRegularAvailabilities:input_type -> AddDriverRegularAvailabilitiesRequest - 4, // 16: SolidarityTransport.GetDriverRegularAvailabilities:input_type -> GetDriverRegularAvailabilitiesRequest - 6, // 17: SolidarityTransport.DeleteDriverRegularAvailability:input_type -> DeleteDriverRegularAvailabilityRequest - 8, // 18: SolidarityTransport.GetDriverJourneys:input_type -> GetDriverJourneysRequest - 10, // 19: SolidarityTransport.GetDriverJourney:input_type -> GetDriverJourneyRequest - 12, // 20: SolidarityTransport.BookDriverJourney:input_type -> BookDriverJourneyRequest - 14, // 21: SolidarityTransport.GetSolidarityTransportBookings:input_type -> GetSolidarityTransportBookingsRequest - 16, // 22: SolidarityTransport.GetSolidarityTransportBooking:input_type -> GetSolidarityTransportBookingRequest - 18, // 23: SolidarityTransport.UpdateSolidarityTransportBookingStatus:input_type -> UpdateSolidarityTransportBookingStatusRequest - 20, // 24: SolidarityTransport.ToggleSolidarityTransportNoreturn:input_type -> ToggleSolidarityTransportNoreturnRequest - 1, // 25: SolidarityTransport.AddDriverRegularAvailability:output_type -> AddDriverRegularAvailabilityResponse - 3, // 26: SolidarityTransport.AddDriverRegularAvailabilities:output_type -> AddDriverRegularAvailabilitiesResponse - 5, // 27: SolidarityTransport.GetDriverRegularAvailabilities:output_type -> GetDriverRegularAvailabilitiesResponse - 7, // 28: SolidarityTransport.DeleteDriverRegularAvailability:output_type -> DeleteDriverRegularAvailabilityResponse - 9, // 29: SolidarityTransport.GetDriverJourneys:output_type -> GetDriverJourneysResponse - 11, // 30: SolidarityTransport.GetDriverJourney:output_type -> GetDriverJourneyResponse - 13, // 31: SolidarityTransport.BookDriverJourney:output_type -> BookDriverJourneyResponse - 15, // 32: SolidarityTransport.GetSolidarityTransportBookings:output_type -> GetSolidarityTransportBookingsResponse - 17, // 33: SolidarityTransport.GetSolidarityTransportBooking:output_type -> GetSolidarityTransportBookingResponse - 19, // 34: SolidarityTransport.UpdateSolidarityTransportBookingStatus:output_type -> UpdateSolidarityTransportBookingStatusResponse - 21, // 35: SolidarityTransport.ToggleSolidarityTransportNoreturn:output_type -> ToggleSolidarityTransportNoreturnResponse - 25, // [25:36] is the sub-list for method output_type - 14, // [14:25] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name + 24, // 0: AddDriverRegularAvailabilityRequest.address:type_name -> GeoJsonFeature + 25, // 1: AddDriverRegularAvailabilitiesRequest.availabilities:type_name -> DriverRegularAvailability + 25, // 2: GetDriverRegularAvailabilitiesResponse.results:type_name -> DriverRegularAvailability + 24, // 3: GetDriverJourneysRequest.departure:type_name -> GeoJsonFeature + 24, // 4: GetDriverJourneysRequest.arrival:type_name -> GeoJsonFeature + 26, // 5: GetDriverJourneysRequest.departure_date:type_name -> google.protobuf.Timestamp + 27, // 6: GetDriverJourneysResponse.driver_journeys:type_name -> SolidarityTransportDriverJourney + 27, // 7: GetDriverJourneyResponse.driver_journey:type_name -> SolidarityTransportDriverJourney + 28, // 8: BookDriverJourneyRequest.data:type_name -> google.protobuf.Struct + 29, // 9: BookDriverJourneyResponse.booking:type_name -> SolidarityTransportBooking + 26, // 10: GetSolidarityTransportBookingsRequest.start_date:type_name -> google.protobuf.Timestamp + 26, // 11: GetSolidarityTransportBookingsRequest.end_date:type_name -> google.protobuf.Timestamp + 29, // 12: GetSolidarityTransportBookingsResponse.bookings:type_name -> SolidarityTransportBooking + 29, // 13: GetSolidarityTransportBookingResponse.booking:type_name -> SolidarityTransportBooking + 29, // 14: UpdateSolidarityTransportBookingRequest.booking:type_name -> SolidarityTransportBooking + 0, // 15: SolidarityTransport.AddDriverRegularAvailability:input_type -> AddDriverRegularAvailabilityRequest + 2, // 16: SolidarityTransport.AddDriverRegularAvailabilities:input_type -> AddDriverRegularAvailabilitiesRequest + 4, // 17: SolidarityTransport.GetDriverRegularAvailabilities:input_type -> GetDriverRegularAvailabilitiesRequest + 6, // 18: SolidarityTransport.DeleteDriverRegularAvailability:input_type -> DeleteDriverRegularAvailabilityRequest + 8, // 19: SolidarityTransport.GetDriverJourneys:input_type -> GetDriverJourneysRequest + 10, // 20: SolidarityTransport.GetDriverJourney:input_type -> GetDriverJourneyRequest + 12, // 21: SolidarityTransport.BookDriverJourney:input_type -> BookDriverJourneyRequest + 14, // 22: SolidarityTransport.GetSolidarityTransportBookings:input_type -> GetSolidarityTransportBookingsRequest + 16, // 23: SolidarityTransport.GetSolidarityTransportBooking:input_type -> GetSolidarityTransportBookingRequest + 18, // 24: SolidarityTransport.UpdateSolidarityTransportBooking:input_type -> UpdateSolidarityTransportBookingRequest + 20, // 25: SolidarityTransport.UpdateSolidarityTransportBookingStatus:input_type -> UpdateSolidarityTransportBookingStatusRequest + 22, // 26: SolidarityTransport.ToggleSolidarityTransportNoreturn:input_type -> ToggleSolidarityTransportNoreturnRequest + 1, // 27: SolidarityTransport.AddDriverRegularAvailability:output_type -> AddDriverRegularAvailabilityResponse + 3, // 28: SolidarityTransport.AddDriverRegularAvailabilities:output_type -> AddDriverRegularAvailabilitiesResponse + 5, // 29: SolidarityTransport.GetDriverRegularAvailabilities:output_type -> GetDriverRegularAvailabilitiesResponse + 7, // 30: SolidarityTransport.DeleteDriverRegularAvailability:output_type -> DeleteDriverRegularAvailabilityResponse + 9, // 31: SolidarityTransport.GetDriverJourneys:output_type -> GetDriverJourneysResponse + 11, // 32: SolidarityTransport.GetDriverJourney:output_type -> GetDriverJourneyResponse + 13, // 33: SolidarityTransport.BookDriverJourney:output_type -> BookDriverJourneyResponse + 15, // 34: SolidarityTransport.GetSolidarityTransportBookings:output_type -> GetSolidarityTransportBookingsResponse + 17, // 35: SolidarityTransport.GetSolidarityTransportBooking:output_type -> GetSolidarityTransportBookingResponse + 19, // 36: SolidarityTransport.UpdateSolidarityTransportBooking:output_type -> UpdateSolidarityTransportBookingResponse + 21, // 37: SolidarityTransport.UpdateSolidarityTransportBookingStatus:output_type -> UpdateSolidarityTransportBookingStatusResponse + 23, // 38: SolidarityTransport.ToggleSolidarityTransportNoreturn:output_type -> ToggleSolidarityTransportNoreturnResponse + 27, // [27:39] is the sub-list for method output_type + 15, // [15:27] is the sub-list for method input_type + 15, // [15:15] is the sub-list for extension type_name + 15, // [15:15] is the sub-list for extension extendee + 0, // [0:15] is the sub-list for field type_name } func init() { file_solidarity_transport_proto_init() } @@ -1706,7 +1843,7 @@ func file_solidarity_transport_proto_init() { } } file_solidarity_transport_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateSolidarityTransportBookingStatusRequest); i { + switch v := v.(*UpdateSolidarityTransportBookingRequest); i { case 0: return &v.state case 1: @@ -1718,7 +1855,7 @@ func file_solidarity_transport_proto_init() { } } file_solidarity_transport_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateSolidarityTransportBookingStatusResponse); i { + switch v := v.(*UpdateSolidarityTransportBookingResponse); i { case 0: return &v.state case 1: @@ -1730,7 +1867,7 @@ func file_solidarity_transport_proto_init() { } } file_solidarity_transport_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ToggleSolidarityTransportNoreturnRequest); i { + switch v := v.(*UpdateSolidarityTransportBookingStatusRequest); i { case 0: return &v.state case 1: @@ -1742,6 +1879,30 @@ func file_solidarity_transport_proto_init() { } } file_solidarity_transport_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateSolidarityTransportBookingStatusResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_solidarity_transport_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ToggleSolidarityTransportNoreturnRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_solidarity_transport_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ToggleSolidarityTransportNoreturnResponse); i { case 0: return &v.state @@ -1761,7 +1922,7 @@ func file_solidarity_transport_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_solidarity_transport_proto_rawDesc, NumEnums: 0, - NumMessages: 22, + NumMessages: 24, NumExtensions: 0, NumServices: 1, }, diff --git a/servers/grpc/proto/gen/solidarity-transport_grpc.pb.go b/servers/grpc/proto/gen/solidarity-transport_grpc.pb.go index 929a1e5..207fa55 100644 --- a/servers/grpc/proto/gen/solidarity-transport_grpc.pb.go +++ b/servers/grpc/proto/gen/solidarity-transport_grpc.pb.go @@ -28,6 +28,7 @@ const ( SolidarityTransport_BookDriverJourney_FullMethodName = "/SolidarityTransport/BookDriverJourney" SolidarityTransport_GetSolidarityTransportBookings_FullMethodName = "/SolidarityTransport/GetSolidarityTransportBookings" SolidarityTransport_GetSolidarityTransportBooking_FullMethodName = "/SolidarityTransport/GetSolidarityTransportBooking" + SolidarityTransport_UpdateSolidarityTransportBooking_FullMethodName = "/SolidarityTransport/UpdateSolidarityTransportBooking" SolidarityTransport_UpdateSolidarityTransportBookingStatus_FullMethodName = "/SolidarityTransport/UpdateSolidarityTransportBookingStatus" SolidarityTransport_ToggleSolidarityTransportNoreturn_FullMethodName = "/SolidarityTransport/ToggleSolidarityTransportNoreturn" ) @@ -48,6 +49,7 @@ type SolidarityTransportClient interface { BookDriverJourney(ctx context.Context, in *BookDriverJourneyRequest, opts ...grpc.CallOption) (*BookDriverJourneyResponse, error) GetSolidarityTransportBookings(ctx context.Context, in *GetSolidarityTransportBookingsRequest, opts ...grpc.CallOption) (*GetSolidarityTransportBookingsResponse, error) GetSolidarityTransportBooking(ctx context.Context, in *GetSolidarityTransportBookingRequest, opts ...grpc.CallOption) (*GetSolidarityTransportBookingResponse, error) + UpdateSolidarityTransportBooking(ctx context.Context, in *UpdateSolidarityTransportBookingRequest, opts ...grpc.CallOption) (*UpdateSolidarityTransportBookingResponse, error) UpdateSolidarityTransportBookingStatus(ctx context.Context, in *UpdateSolidarityTransportBookingStatusRequest, opts ...grpc.CallOption) (*UpdateSolidarityTransportBookingStatusResponse, error) ToggleSolidarityTransportNoreturn(ctx context.Context, in *ToggleSolidarityTransportNoreturnRequest, opts ...grpc.CallOption) (*ToggleSolidarityTransportNoreturnResponse, error) } @@ -141,6 +143,15 @@ func (c *solidarityTransportClient) GetSolidarityTransportBooking(ctx context.Co return out, nil } +func (c *solidarityTransportClient) UpdateSolidarityTransportBooking(ctx context.Context, in *UpdateSolidarityTransportBookingRequest, opts ...grpc.CallOption) (*UpdateSolidarityTransportBookingResponse, error) { + out := new(UpdateSolidarityTransportBookingResponse) + err := c.cc.Invoke(ctx, SolidarityTransport_UpdateSolidarityTransportBooking_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *solidarityTransportClient) UpdateSolidarityTransportBookingStatus(ctx context.Context, in *UpdateSolidarityTransportBookingStatusRequest, opts ...grpc.CallOption) (*UpdateSolidarityTransportBookingStatusResponse, error) { out := new(UpdateSolidarityTransportBookingStatusResponse) err := c.cc.Invoke(ctx, SolidarityTransport_UpdateSolidarityTransportBookingStatus_FullMethodName, in, out, opts...) @@ -175,6 +186,7 @@ type SolidarityTransportServer interface { BookDriverJourney(context.Context, *BookDriverJourneyRequest) (*BookDriverJourneyResponse, error) GetSolidarityTransportBookings(context.Context, *GetSolidarityTransportBookingsRequest) (*GetSolidarityTransportBookingsResponse, error) GetSolidarityTransportBooking(context.Context, *GetSolidarityTransportBookingRequest) (*GetSolidarityTransportBookingResponse, error) + UpdateSolidarityTransportBooking(context.Context, *UpdateSolidarityTransportBookingRequest) (*UpdateSolidarityTransportBookingResponse, error) UpdateSolidarityTransportBookingStatus(context.Context, *UpdateSolidarityTransportBookingStatusRequest) (*UpdateSolidarityTransportBookingStatusResponse, error) ToggleSolidarityTransportNoreturn(context.Context, *ToggleSolidarityTransportNoreturnRequest) (*ToggleSolidarityTransportNoreturnResponse, error) mustEmbedUnimplementedSolidarityTransportServer() @@ -211,6 +223,9 @@ func (UnimplementedSolidarityTransportServer) GetSolidarityTransportBookings(con func (UnimplementedSolidarityTransportServer) GetSolidarityTransportBooking(context.Context, *GetSolidarityTransportBookingRequest) (*GetSolidarityTransportBookingResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetSolidarityTransportBooking not implemented") } +func (UnimplementedSolidarityTransportServer) UpdateSolidarityTransportBooking(context.Context, *UpdateSolidarityTransportBookingRequest) (*UpdateSolidarityTransportBookingResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateSolidarityTransportBooking not implemented") +} func (UnimplementedSolidarityTransportServer) UpdateSolidarityTransportBookingStatus(context.Context, *UpdateSolidarityTransportBookingStatusRequest) (*UpdateSolidarityTransportBookingStatusResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateSolidarityTransportBookingStatus not implemented") } @@ -392,6 +407,24 @@ func _SolidarityTransport_GetSolidarityTransportBooking_Handler(srv interface{}, return interceptor(ctx, in, info, handler) } +func _SolidarityTransport_UpdateSolidarityTransportBooking_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateSolidarityTransportBookingRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SolidarityTransportServer).UpdateSolidarityTransportBooking(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: SolidarityTransport_UpdateSolidarityTransportBooking_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SolidarityTransportServer).UpdateSolidarityTransportBooking(ctx, req.(*UpdateSolidarityTransportBookingRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _SolidarityTransport_UpdateSolidarityTransportBookingStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateSolidarityTransportBookingStatusRequest) if err := dec(in); err != nil { @@ -471,6 +504,10 @@ var SolidarityTransport_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetSolidarityTransportBooking", Handler: _SolidarityTransport_GetSolidarityTransportBooking_Handler, }, + { + MethodName: "UpdateSolidarityTransportBooking", + Handler: _SolidarityTransport_UpdateSolidarityTransportBooking_Handler, + }, { MethodName: "UpdateSolidarityTransportBookingStatus", Handler: _SolidarityTransport_UpdateSolidarityTransportBookingStatus_Handler, diff --git a/servers/grpc/proto/solidarity-transport.proto b/servers/grpc/proto/solidarity-transport.proto index cbab5e4..980e76e 100644 --- a/servers/grpc/proto/solidarity-transport.proto +++ b/servers/grpc/proto/solidarity-transport.proto @@ -21,6 +21,7 @@ service SolidarityTransport { rpc BookDriverJourney(BookDriverJourneyRequest) returns (BookDriverJourneyResponse) {} rpc GetSolidarityTransportBookings(GetSolidarityTransportBookingsRequest) returns (GetSolidarityTransportBookingsResponse) {} rpc GetSolidarityTransportBooking(GetSolidarityTransportBookingRequest) returns (GetSolidarityTransportBookingResponse) {} + rpc UpdateSolidarityTransportBooking(UpdateSolidarityTransportBookingRequest) returns (UpdateSolidarityTransportBookingResponse) {} rpc UpdateSolidarityTransportBookingStatus(UpdateSolidarityTransportBookingStatusRequest) returns (UpdateSolidarityTransportBookingStatusResponse) {} rpc ToggleSolidarityTransportNoreturn(ToggleSolidarityTransportNoreturnRequest) returns (ToggleSolidarityTransportNoreturnResponse) {} } @@ -84,7 +85,9 @@ message BookDriverJourneyRequest { string driver_id = 2; string driver_journey_id = 3; int64 return_waiting_duration = 4; - google.protobuf.Struct data = 5; + double price_amount = 5; + string price_currency = 6; + google.protobuf.Struct data = 7; } message BookDriverJourneyResponse { @@ -110,9 +113,16 @@ message GetSolidarityTransportBookingResponse { SolidarityTransportBooking booking = 1; } +message UpdateSolidarityTransportBookingRequest { + SolidarityTransportBooking booking = 1; + } + +message UpdateSolidarityTransportBookingResponse {} + message UpdateSolidarityTransportBookingStatusRequest { string booking_id = 1; string new_status = 2; + string reason = 3; } message UpdateSolidarityTransportBookingStatusResponse {} diff --git a/servers/grpc/server/bookings.go b/servers/grpc/server/bookings.go index 490a0ea..7251b30 100644 --- a/servers/grpc/server/bookings.go +++ b/servers/grpc/server/bookings.go @@ -15,10 +15,12 @@ func (s SolidarityTransportServerImpl) BookDriverJourney(ctx context.Context, re passengerId := req.PassengerId driverId := req.DriverId journeyId := req.DriverJourneyId + priceAmount := req.PriceAmount + priceCurrency := req.PriceCurrency returnWaitingDuration := time.Duration(req.ReturnWaitingDuration) data := req.Data.AsMap() - booking, err := s.Handler.BookDriverJourney(passengerId, driverId, journeyId, returnWaitingDuration, data) + booking, err := s.Handler.BookDriverJourney(passengerId, driverId, journeyId, returnWaitingDuration, priceAmount, priceCurrency, data) if err != nil { log.Error().Err(err).Msg("issue in BookDriverJourney handler") return nil, status.Errorf(codes.Internal, "could not create booking : %v", err) @@ -76,13 +78,31 @@ func (s SolidarityTransportServerImpl) GetSolidarityTransportBooking(ctx context }, nil } +func (s SolidarityTransportServerImpl) UpdateSolidarityTransportBooking(ctx context.Context, req *gen.UpdateSolidarityTransportBookingRequest) (*gen.UpdateSolidarityTransportBookingResponse, error) { + booking := req.Booking + b, err := transformers.BookingProtoToType(booking) + if err != nil || b == nil { + log.Error().Err(err).Msg("issue in UpdateBooking handler") + return nil, status.Errorf(codes.NotFound, "cannot update booking : %v", err) + } + + err = s.Handler.UpdateBooking(*b) + if err != nil { + log.Error().Err(err).Msg("issue in UpdateBooking handler") + return nil, status.Errorf(codes.NotFound, "issue on update booking : %v", err) + } + + return &gen.UpdateSolidarityTransportBookingResponse{}, nil +} + func (s SolidarityTransportServerImpl) UpdateSolidarityTransportBookingStatus(ctx context.Context, req *gen.UpdateSolidarityTransportBookingStatusRequest) (*gen.UpdateSolidarityTransportBookingStatusResponse, error) { bookingid := req.BookingId newStatus := req.NewStatus + reason := req.Reason - err := s.Handler.UpdateBookingStatus(bookingid, newStatus) + err := s.Handler.UpdateBookingStatus(bookingid, newStatus, reason) if err != nil { - log.Error().Err(err).Msg("issue in GetBooking handler") + log.Error().Err(err).Msg("issue in UpdateBookingStatus handler") return nil, status.Errorf(codes.NotFound, "transformer issue on booking : %v", err) } diff --git a/servers/grpc/server/journeys.go b/servers/grpc/server/journeys.go index cfec119..36e9fba 100644 --- a/servers/grpc/server/journeys.go +++ b/servers/grpc/server/journeys.go @@ -28,8 +28,6 @@ func (s SolidarityTransportServerImpl) GetDriverJourneys(ctx context.Context, re return nil, status.Errorf(codes.Internal, "could not get driver journeys : %v", err) } - log.Trace().Any("driver journeys", driverJourneys).Msg("got driver journeys") - results := []*gen.SolidarityTransportDriverJourney{} for _, j := range driverJourneys { diff --git a/servers/grpc/transformers/journeys.go b/servers/grpc/transformers/journeys.go index f04e22a..30e3ec6 100644 --- a/servers/grpc/transformers/journeys.go +++ b/servers/grpc/transformers/journeys.go @@ -52,8 +52,8 @@ func DriverJourneyTypeToProto(j *types.DriverJourney) (*gen.SolidarityTransportD DriverDepartureDate: timestamppb.New(j.DriverDepartureDate), PassengerPickupDate: timestamppb.New(j.PassengerPickupDate), Price: &gen.SolidarityTransportPrice{ - Amount: 0, - Currency: "EUR", + Amount: j.Price.Amount, + Currency: j.Price.Currency, }, Noreturn: j.Noreturn, }, nil diff --git a/storage/memory.go b/storage/memory.go index cab87c3..fe4e282 100644 --- a/storage/memory.go +++ b/storage/memory.go @@ -144,7 +144,12 @@ func (s MemoryStorage) GetBooking(id string) (res *types.Booking, err error) { return } -func (s MemoryStorage) UpdateBookingStatus(bookingid string, newStatus string) error { +func (s MemoryStorage) UpdateBooking(booking types.Booking) error { + s.Bookings[booking.Id] = &booking + return nil +} + +func (s MemoryStorage) UpdateBookingStatus(bookingid string, newStatus string, reason string) error { b := s.Bookings[bookingid] if b == nil { @@ -152,6 +157,7 @@ func (s MemoryStorage) UpdateBookingStatus(bookingid string, newStatus string) e } b.Status = newStatus + b.Data["reason"] = reason return nil } diff --git a/storage/mongodb.go b/storage/mongodb.go index 1c0a6d5..a33c8fc 100644 --- a/storage/mongodb.go +++ b/storage/mongodb.go @@ -210,9 +210,18 @@ func (s MongoDBStorage) GetBooking(id string) (*types.Booking, error) { return &res, nil } -func (s MongoDBStorage) UpdateBookingStatus(bookingid string, newStatus string) error { +func (s MongoDBStorage) UpdateBooking(booking types.Booking) error { // filter := bson.M{"_id": bookingid} - replacement := bson.M{"$set": bson.M{"status": newStatus}} + if _, err := s.Collections.Bookings.ReplaceOne(context.Background(), bson.M{"_id": booking.Id}, booking); err != nil { + return err + } + + return nil +} + +func (s MongoDBStorage) UpdateBookingStatus(bookingid string, newStatus string, reason string) error { + // filter := bson.M{"_id": bookingid} + replacement := bson.M{"$set": bson.M{"status": newStatus, "data.reason": reason}} if _, err := s.Collections.Bookings.UpdateByID(context.Background(), bookingid, replacement); err != nil { return err diff --git a/storage/storage.go b/storage/storage.go index bf9cbb1..d5ce6da 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -23,7 +23,8 @@ type Storage interface { CreateBooking(types.Booking) error GetAllBookings() ([]*types.Booking, error) GetBooking(id string) (*types.Booking, error) - UpdateBookingStatus(bookingid string, newStatus string) error + UpdateBooking(booking types.Booking) error + UpdateBookingStatus(bookingid string, newStatus string, reason string) error } func NewStorage(cfg *viper.Viper) (Storage, error) {