From 6fbd62936f9fe3ae890712f5af91bc292269a2c5 Mon Sep 17 00:00:00 2001 From: matst80 Date: Mon, 13 Oct 2025 17:39:07 +0200 Subject: [PATCH] cleanup --- cmd/cart/event_log.go | 291 -------------------------- cmd/cart/main.go | 16 +- cmd/cart/mutation_add_item.go | 2 +- cmd/cart/mutation_change_quantity.go | 1 + cmd/cart/mutation_remove_delivery.go | 1 + cmd/cart/mutation_remove_item.go | 1 + cmd/cart/mutation_set_cart_items.go | 46 ---- cmd/cart/mutation_set_pickup_point.go | 11 + cmd/cart/pool-server.go | 45 +++- go.mod | 2 +- pkg/messages/control_plane.pb.go | 95 ++++++--- pkg/messages/control_plane_grpc.pb.go | 2 +- pkg/messages/messages.pb.go | 288 +++++++++++++------------ 13 files changed, 274 insertions(+), 527 deletions(-) delete mode 100644 cmd/cart/event_log.go delete mode 100644 cmd/cart/mutation_set_cart_items.go diff --git a/cmd/cart/event_log.go b/cmd/cart/event_log.go deleted file mode 100644 index a62123f..0000000 --- a/cmd/cart/event_log.go +++ /dev/null @@ -1,291 +0,0 @@ -package main - -import ( - "bufio" - "encoding/json" - "errors" - "fmt" - "log" - "os" - "path/filepath" - "reflect" - "sync" - "time" - - "git.tornberg.me/go-cart-actor/pkg/actor" - messages "git.tornberg.me/go-cart-actor/pkg/messages" - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promauto" -) - -/* -event_log.go - -Append-only cart event log (per cart id) with replay + metrics. - -Rationale: - - Enables recovery of in-memory cart state after process restarts or TTL eviction. - - Provides a chronological mutation trail for auditing / debugging. - - Avoids write amplification of full snapshots on every mutation. - -Format: - One JSON object per line: - { - "ts": 1700000000, - "type": "AddRequest", - "payload": { ... mutation fields ... } - } - -Concurrency: - - Appends: synchronized per-cart via an in-process mutex map to avoid partial writes. - - Replay: sequential read of entire file; mutations applied in order. - -Usage Integration (to be wired by caller): - 1. After successful mutation application (non-replay), invoke: - AppendCartEvent(grain.GetId(), mutation) - 2. During grain spawn, call: - ReplayCartEvents(grain, grain.GetId()) - BEFORE serving requests, so state is reconstructed. - -Metrics: - - cart_event_log_appends_total - - cart_event_log_replay_total - - cart_event_log_replay_failures_total - - cart_event_log_bytes_written_total - - cart_event_log_files_existing (gauge) - - cart_event_log_last_append_unix (gauge) - - cart_event_log_replay_duration_seconds (histogram) - -Rotation / Compaction: - - Not implemented. If needed, implement size checks and snapshot+truncate later. - -Caveats: - - Mutation schema changes may break replay unless backward-compatible. - - Missing / unknown event types are skipped (metric incremented). - - If a mutation fails during replay, replay continues (logged + metric). - -*/ - -var ( - eventLogDir = "data" - - eventAppendsTotal = promauto.NewCounter(prometheus.CounterOpts{ - Name: "cart_event_log_appends_total", - Help: "Total number of cart mutation events appended to event logs.", - }) - eventReplayTotal = promauto.NewCounter(prometheus.CounterOpts{ - Name: "cart_event_log_replay_total", - Help: "Total number of successful event log replays (per cart).", - }) - eventReplayFailuresTotal = promauto.NewCounter(prometheus.CounterOpts{ - Name: "cart_event_log_replay_failures_total", - Help: "Total number of failed event log replay operations.", - }) - eventBytesWrittenTotal = promauto.NewCounter(prometheus.CounterOpts{ - Name: "cart_event_log_bytes_written_total", - Help: "Cumulative number of bytes written to all cart event logs.", - }) - eventFilesExisting = promauto.NewGauge(prometheus.GaugeOpts{ - Name: "cart_event_log_files_existing", - Help: "Number of cart event log files currently existing on disk.", - }) - eventLastAppendUnix = promauto.NewGauge(prometheus.GaugeOpts{ - Name: "cart_event_log_last_append_unix", - Help: "Unix timestamp of the last append to any cart event log.", - }) - eventReplayDuration = promauto.NewHistogram(prometheus.HistogramOpts{ - Name: "cart_event_log_replay_duration_seconds", - Help: "Duration of replay operations per cart in seconds.", - Buckets: prometheus.DefBuckets, - }) - eventUnknownTypesTotal = promauto.NewCounter(prometheus.CounterOpts{ - Name: "cart_event_log_unknown_types_total", - Help: "Total number of unknown event types encountered during replay (skipped).", - }) - eventMutationErrorsTotal = promauto.NewCounter(prometheus.CounterOpts{ - Name: "cart_event_log_mutation_errors_total", - Help: "Total number of errors applying mutation events during replay.", - }) -) - -type cartEventRecord struct { - Timestamp int64 `json:"ts"` - Type string `json:"type"` - Payload interface{} `json:"payload"` -} - -// registry of supported mutation payload type constructors -var eventTypeFactories = map[string]func() interface{}{ - "AddRequest": func() interface{} { return &messages.AddRequest{} }, - "AddItem": func() interface{} { return &messages.AddItem{} }, - "RemoveItem": func() interface{} { return &messages.RemoveItem{} }, - "RemoveDelivery": func() interface{} { return &messages.RemoveDelivery{} }, - "ChangeQuantity": func() interface{} { return &messages.ChangeQuantity{} }, - "SetDelivery": func() interface{} { return &messages.SetDelivery{} }, - "SetPickupPoint": func() interface{} { return &messages.SetPickupPoint{} }, - "SetCartRequest": func() interface{} { return &messages.SetCartRequest{} }, - "OrderCreated": func() interface{} { return &messages.OrderCreated{} }, - "InitializeCheckout": func() interface{} { return &messages.InitializeCheckout{} }, -} - -// Per-cart mutexes to serialize append operations (avoid partial overlapping writes) -var ( - eventLogMu sync.Map // map[string]*sync.Mutex -) - -// getCartEventMutex returns a mutex for a specific cart id string. -func getCartEventMutex(id string) *sync.Mutex { - if v, ok := eventLogMu.Load(id); ok { - return v.(*sync.Mutex) - } - m := &sync.Mutex{} - actual, _ := eventLogMu.LoadOrStore(id, m) - return actual.(*sync.Mutex) -} - -// EventLogPath returns the path to the cart's event log file. -func EventLogPath(id CartId) string { - return filepath.Join(eventLogDir, fmt.Sprintf("%s.events.log", id.String())) -} - -// EnsureEventLogDirectory ensures base directory exists and updates gauge. -func EnsureEventLogDirectory() error { - if _, err := os.Stat(eventLogDir); errors.Is(err, os.ErrNotExist) { - if err2 := os.MkdirAll(eventLogDir, 0755); err2 != nil { - return err2 - } - } - // Update files existing gauge (approximate; counts matching *.events.log) - pattern := filepath.Join(eventLogDir, "*.events.log") - matches, _ := filepath.Glob(pattern) - eventFilesExisting.Set(float64(len(matches))) - return nil -} - -// AppendCartEvent appends a mutation event to the cart's log (JSON line). -func AppendCartEvent(id CartId, mutation interface{}) error { - if mutation == nil { - return errors.New("nil mutation cannot be logged") - } - if err := EnsureEventLogDirectory(); err != nil { - return err - } - - typ := mutationTypeName(mutation) - rec := cartEventRecord{ - Timestamp: time.Now().Unix(), - Type: typ, - Payload: mutation, - } - lineBytes, err := json.Marshal(rec) - if err != nil { - return fmt.Errorf("marshal event: %w", err) - } - lineBytes = append(lineBytes, '\n') - - path := EventLogPath(id) - mtx := getCartEventMutex(id.String()) - mtx.Lock() - defer mtx.Unlock() - - fh, err := os.OpenFile(path, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644) - if err != nil { - return fmt.Errorf("open event log: %w", err) - } - defer fh.Close() - - n, werr := fh.Write(lineBytes) - if werr != nil { - return fmt.Errorf("write event log: %w", werr) - } - - eventAppendsTotal.Inc() - eventBytesWrittenTotal.Add(float64(n)) - eventLastAppendUnix.Set(float64(rec.Timestamp)) - return nil -} - -// ReplayCartEvents replays an existing cart's event log into the provided grain. -// It applies mutation payloads in order, skipping unknown types. -func ReplayCartEvents(grain *CartGrain, id CartId, registry actor.MutationRegistry) error { - start := time.Now() - path := EventLogPath(id) - if _, err := os.Stat(path); errors.Is(err, os.ErrNotExist) { - // No log -> nothing to replay - return nil - } - - fh, err := os.Open(path) - if err != nil { - eventReplayFailuresTotal.Inc() - return fmt.Errorf("open replay file: %w", err) - } - defer fh.Close() - - scanner := bufio.NewScanner(fh) - // Increase buffer in case of large payloads - const maxLine = 256 * 1024 - buf := make([]byte, 0, 64*1024) - scanner.Buffer(buf, maxLine) - - for scanner.Scan() { - line := scanner.Bytes() - var raw struct { - Timestamp time.Time `json:"ts"` - Type string `json:"type"` - Payload json.RawMessage `json:"payload"` - } - if err := json.Unmarshal(line, &raw); err != nil { - eventReplayFailuresTotal.Inc() - continue // skip malformed line - } - - instance, ok := registry.Create(raw.Type) - if !ok { - log.Printf("loading failed for unknown mutation type: %s", raw.Type) - eventReplayFailuresTotal.Inc() - continue // skip unknown type - } - if err := json.Unmarshal(raw.Payload, instance); err != nil { - eventMutationErrorsTotal.Inc() - continue - } - // Apply mutation directly using internal registration (bypass AppendCartEvent recursion). - if applyErr := registry.Apply(grain, instance); applyErr != nil { - eventMutationErrorsTotal.Inc() - continue - } else { - // Update lastChange to the timestamp of this event (sliding inactivity window support). - grain.lastChange = raw.Timestamp - } - } - if serr := scanner.Err(); serr != nil { - eventReplayFailuresTotal.Inc() - return fmt.Errorf("scanner error: %w", serr) - } - - eventReplayTotal.Inc() - eventReplayDuration.Observe(time.Since(start).Seconds()) - return nil -} - -// mutationTypeName returns the short struct name for a mutation (pointer aware). -func mutationTypeName(v interface{}) string { - if v == nil { - return "nil" - } - t := reflect.TypeOf(v) - if t.Kind() == reflect.Ptr { - t = t.Elem() - } - return t.Name() -} - -/* -Future enhancements: - - Compression: gzip large (> N events) logs to reduce disk usage. - - Compaction: periodic snapshot + truncate old events to bound replay latency. - - Checkpoint events: inject cart state snapshots every M mutations. - - Integrity: add checksum per line for corruption detection. - - Multi-writer safety across processes (currently only safe within one process). -*/ diff --git a/cmd/cart/main.go b/cmd/cart/main.go index 5d67636..5a61020 100644 --- a/cmd/cart/main.go +++ b/cmd/cart/main.go @@ -110,6 +110,9 @@ func main() { actor.NewMutation(InitializeCheckout, func() *messages.InitializeCheckout { return &messages.InitializeCheckout{} }), + actor.NewMutation(OrderCreated, func() *messages.OrderCreated { + return &messages.OrderCreated{} + }), actor.NewMutation(RemoveDelivery, func() *messages.RemoveDelivery { return &messages.RemoveDelivery{} }), @@ -119,6 +122,9 @@ func main() { actor.NewMutation(SetPickupPoint, func() *messages.SetPickupPoint { return &messages.SetPickupPoint{} }), + actor.NewMutation(ClearCart, func() *messages.ClearCartRequest { + return &messages.ClearCartRequest{} + }), ) diskStorage := actor.NewDiskStorage[CartGrain]("data", reg) poolConfig := actor.GrainPoolConfig[CartGrain]{ @@ -372,7 +378,7 @@ func main() { return } - err = triggerOrderCompleted(err, syncedServer, order) + err = triggerOrderCompleted(syncedServer, order) if err != nil { log.Printf("Error processing cart message: %v\n", err) w.WriteHeader(http.StatusInternalServerError) @@ -409,7 +415,7 @@ func main() { } -func triggerOrderCompleted(err error, syncedServer *PoolServer, order *CheckoutOrder) error { +func triggerOrderCompleted(syncedServer *PoolServer, order *CheckoutOrder) error { mutation := &messages.OrderCreated{ OrderId: order.ID, Status: order.Status, @@ -418,10 +424,8 @@ func triggerOrderCompleted(err error, syncedServer *PoolServer, order *CheckoutO if !ok { return fmt.Errorf("invalid cart id in order reference: %s", order.MerchantReference1) } - _, applyErr := syncedServer.pool.Apply(uint64(cid), mutation) - if applyErr == nil { - _ = AppendCartEvent(cid, mutation) - } + _, applyErr := syncedServer.Apply(uint64(cid), mutation) + return applyErr } diff --git a/cmd/cart/mutation_add_item.go b/cmd/cart/mutation_add_item.go index 1bae75a..fc375d8 100644 --- a/cmd/cart/mutation_add_item.go +++ b/cmd/cart/mutation_add_item.go @@ -71,6 +71,6 @@ func AddItem(g *CartGrain, m *messages.AddItem) error { TaxRate: taxRate, StoreId: m.StoreId, }) - + g.UpdateTotals() return nil } diff --git a/cmd/cart/mutation_change_quantity.go b/cmd/cart/mutation_change_quantity.go index 56efc1e..9f41e33 100644 --- a/cmd/cart/mutation_change_quantity.go +++ b/cmd/cart/mutation_change_quantity.go @@ -49,5 +49,6 @@ func ChangeQuantity(g *CartGrain, m *messages.ChangeQuantity) error { } g.Items[foundIndex].Quantity = int(m.Quantity) + g.UpdateTotals() return nil } diff --git a/cmd/cart/mutation_remove_delivery.go b/cmd/cart/mutation_remove_delivery.go index afea6b6..f3e1e6a 100644 --- a/cmd/cart/mutation_remove_delivery.go +++ b/cmd/cart/mutation_remove_delivery.go @@ -44,5 +44,6 @@ func RemoveDelivery(g *CartGrain, m *messages.RemoveDelivery) error { // Remove delivery (order not preserved beyond necessity) g.Deliveries = append(g.Deliveries[:index], g.Deliveries[index+1:]...) + g.UpdateTotals() return nil } diff --git a/cmd/cart/mutation_remove_item.go b/cmd/cart/mutation_remove_item.go index ebd77fe..7b94a61 100644 --- a/cmd/cart/mutation_remove_item.go +++ b/cmd/cart/mutation_remove_item.go @@ -40,5 +40,6 @@ func RemoveItem(g *CartGrain, m *messages.RemoveItem) error { } g.Items = append(g.Items[:index], g.Items[index+1:]...) + g.UpdateTotals() return nil } diff --git a/cmd/cart/mutation_set_cart_items.go b/cmd/cart/mutation_set_cart_items.go deleted file mode 100644 index edba61d..0000000 --- a/cmd/cart/mutation_set_cart_items.go +++ /dev/null @@ -1,46 +0,0 @@ -package main - -// mutation_set_cart_items.go -// -// Registers the SetCartRequest mutation. This mutation replaces the entire list -// of cart items with the provided list (each entry is an AddRequest). -// -// Behavior: -// - Clears existing items (but leaves deliveries intact). -// - Iterates over each AddRequest and delegates to CartGrain.AddItem -// (which performs product lookup, creates AddItem mutation). -// - If any single addition fails, the mutation aborts with an error; -// items added prior to the failure remain (consistent with previous behavior). -// - Totals recalculated after completion via WithTotals(). -// -// Notes: -// - Potential optimization: batch product lookups; currently sequential. -// - Consider adding rollback semantics if atomic replacement is desired. -// - Deliveries might reference item IDs that are now invalid—original logic -// also left deliveries untouched. If that becomes an issue, add a cleanup -// pass to remove deliveries whose item IDs no longer exist. - -// func HandleSetCartRequest(g *CartGrain, m *messages.SetCartRequest) error { -// if m == nil { -// return fmt.Errorf("SetCartRequest: nil payload") -// } - -// // Clear current items (keep deliveries) -// g.mu.Lock() -// g.Items = make([]*CartItem, 0, len(m.Items)) -// g.mu.Unlock() - -// for _, it := range m.Items { -// if it == nil { -// continue -// } -// if it.Sku == "" || it.Quantity < 1 { -// return fmt.Errorf("SetCartRequest: invalid item (sku='%s' qty=%d)", it.Sku, it.Quantity) -// } -// _, err := g.AddItem(it.Sku, int(it.Quantity), it.Country, it.StoreId) -// if err != nil { -// return fmt.Errorf("SetCartRequest: add sku '%s' failed: %w", it.Sku, err) -// } -// } -// return nil -// } diff --git a/cmd/cart/mutation_set_pickup_point.go b/cmd/cart/mutation_set_pickup_point.go index 71c5be8..a5ef742 100644 --- a/cmd/cart/mutation_set_pickup_point.go +++ b/cmd/cart/mutation_set_pickup_point.go @@ -49,3 +49,14 @@ func SetPickupPoint(g *CartGrain, m *messages.SetPickupPoint) error { } return fmt.Errorf("SetPickupPoint: delivery id %d not found", m.DeliveryId) } + +func ClearCart(g *CartGrain, m *messages.ClearCartRequest) error { + if m == nil { + return fmt.Errorf("ClearCart: nil payload") + } + // maybe check if payment is done? + g.Deliveries = g.Deliveries[:0] + g.Items = g.Items[:0] + g.UpdateTotals() + return nil +} diff --git a/cmd/cart/pool-server.go b/cmd/cart/pool-server.go index ec9de43..6862255 100644 --- a/cmd/cart/pool-server.go +++ b/cmd/cart/pool-server.go @@ -7,6 +7,7 @@ import ( "log" "net/http" "strconv" + "sync" "time" "git.tornberg.me/go-cart-actor/pkg/actor" @@ -15,25 +16,25 @@ import ( ) type PoolServer struct { + actor.GrainPool[*CartGrain] pod_name string - pool actor.GrainPool[*CartGrain] klarnaClient *KlarnaClient } func NewPoolServer(pool actor.GrainPool[*CartGrain], pod_name string, klarnaClient *KlarnaClient) *PoolServer { return &PoolServer{ + GrainPool: pool, pod_name: pod_name, - pool: pool, klarnaClient: klarnaClient, } } func (s *PoolServer) ApplyLocal(id CartId, mutation proto.Message) (*CartGrain, error) { - return s.pool.Apply(uint64(id), mutation) + return s.Apply(uint64(id), mutation) } func (s *PoolServer) HandleGet(w http.ResponseWriter, r *http.Request, id CartId) error { - grain, err := s.pool.Get(uint64(id)) + grain, err := s.Get(uint64(id)) if err != nil { return err } @@ -163,16 +164,42 @@ func (s *PoolServer) HandleQuantityChange(w http.ResponseWriter, r *http.Request return s.WriteResult(w, reply) } +type SetCartItems struct { + Country string `json:"country"` + Items []struct { + Sku string `json:"sku"` + Quantity int `json:"quantity"` + } `json:"items"` +} + func (s *PoolServer) HandleSetCartItems(w http.ResponseWriter, r *http.Request, id CartId) error { - setCartItems := messages.SetCartRequest{} + setCartItems := SetCartItems{} err := json.NewDecoder(r.Body).Decode(&setCartItems) if err != nil { return err } - reply, err := s.ApplyLocal(id, &setCartItems) + reply, err := s.ApplyLocal(id, &messages.ClearCartRequest{}) if err != nil { return err } + wg := sync.WaitGroup{} + for _, item := range setCartItems.Items { + wg.Add(1) + go func(sku string, quantity int) { + msg, err := GetItemAddMessage(sku, quantity, setCartItems.Country, nil) + if err != nil { + log.Printf("error adding item %s: %v", sku, err) + return + } + reply, err = s.ApplyLocal(id, msg) + if err != nil { + log.Printf("error applying message %v: %v", msg, err) + return + } + wg.Done() + }(item.Sku, item.Quantity) + } + wg.Wait() return s.WriteResult(w, reply) } @@ -241,7 +268,7 @@ func (s *PoolServer) CreateOrUpdateCheckout(host string, id CartId) (*CheckoutOr } // Get current grain state (may be local or remote) - grain, err := s.pool.Get(uint64(id)) + grain, err := s.Get(uint64(id)) if err != nil { return nil, err } @@ -261,7 +288,7 @@ func (s *PoolServer) CreateOrUpdateCheckout(host string, id CartId) (*CheckoutOr func (s *PoolServer) ApplyCheckoutStarted(klarnaOrder *CheckoutOrder, id CartId) (*CartGrain, error) { // Persist initialization state via mutation (best-effort) - return s.pool.Apply(uint64(id), &messages.InitializeCheckout{ + return s.Apply(uint64(id), &messages.InitializeCheckout{ OrderId: klarnaOrder.ID, Status: klarnaOrder.Status, PaymentInProgress: true, @@ -373,7 +400,7 @@ func CartIdHandler(fn func(cartId CartId, w http.ResponseWriter, r *http.Request func (s *PoolServer) ProxyHandler(fn func(w http.ResponseWriter, r *http.Request, cartId CartId) error) func(cartId CartId, w http.ResponseWriter, r *http.Request) error { return func(cartId CartId, w http.ResponseWriter, r *http.Request) error { - if ownerHost, ok := s.pool.OwnerHost(uint64(cartId)); ok { + if ownerHost, ok := s.OwnerHost(uint64(cartId)); ok { handled, err := ownerHost.Proxy(uint64(cartId), w, r) if err == nil && handled { return nil diff --git a/go.mod b/go.mod index 0148cea..3de39bb 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module git.tornberg.me/go-cart-actor go 1.25.1 require ( + github.com/gogo/protobuf v1.3.2 github.com/google/uuid v1.6.0 github.com/matst80/slask-finder v0.0.0-20251009175145-ce05aff5a548 github.com/prometheus/client_golang v1.23.2 @@ -37,7 +38,6 @@ require ( github.com/go-openapi/swag/stringutils v0.25.1 // indirect github.com/go-openapi/swag/typeutils v0.25.1 // indirect github.com/go-openapi/swag/yamlutils v0.25.1 // indirect - github.com/gogo/protobuf v1.3.2 // indirect github.com/google/gnostic-models v0.7.0 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/gorilla/schema v1.4.1 // indirect diff --git a/pkg/messages/control_plane.pb.go b/pkg/messages/control_plane.pb.go index 1bd4ef8..95aed7d 100644 --- a/pkg/messages/control_plane.pb.go +++ b/pkg/messages/control_plane.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.10 -// protoc v6.32.1 +// protoc-gen-go v1.36.5 +// protoc v5.29.3 // source: control_plane.proto package messages @@ -453,38 +453,65 @@ func (x *ExpiryAnnounce) GetIds() []uint64 { var File_control_plane_proto protoreflect.FileDescriptor -const file_control_plane_proto_rawDesc = "" + - "\n" + - "\x13control_plane.proto\x12\bmessages\"\a\n" + - "\x05Empty\"<\n" + - "\tPingReply\x12\x12\n" + - "\x04host\x18\x01 \x01(\tR\x04host\x12\x1b\n" + - "\tunix_time\x18\x02 \x01(\x03R\bunixTime\"3\n" + - "\x10NegotiateRequest\x12\x1f\n" + - "\vknown_hosts\x18\x01 \x03(\tR\n" + - "knownHosts\"&\n" + - "\x0eNegotiateReply\x12\x14\n" + - "\x05hosts\x18\x01 \x03(\tR\x05hosts\"!\n" + - "\rActorIdsReply\x12\x10\n" + - "\x03ids\x18\x01 \x03(\x04R\x03ids\"F\n" + - "\x0eOwnerChangeAck\x12\x1a\n" + - "\baccepted\x18\x01 \x01(\bR\baccepted\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\"#\n" + - "\rClosingNotice\x12\x12\n" + - "\x04host\x18\x01 \x01(\tR\x04host\"9\n" + - "\x11OwnershipAnnounce\x12\x12\n" + - "\x04host\x18\x01 \x01(\tR\x04host\x12\x10\n" + - "\x03ids\x18\x02 \x03(\x04R\x03ids\"6\n" + - "\x0eExpiryAnnounce\x12\x12\n" + - "\x04host\x18\x01 \x01(\tR\x04host\x12\x10\n" + - "\x03ids\x18\x02 \x03(\x04R\x03ids2\x8d\x03\n" + - "\fControlPlane\x12,\n" + - "\x04Ping\x12\x0f.messages.Empty\x1a\x13.messages.PingReply\x12A\n" + - "\tNegotiate\x12\x1a.messages.NegotiateRequest\x1a\x18.messages.NegotiateReply\x12<\n" + - "\x10GetLocalActorIds\x12\x0f.messages.Empty\x1a\x17.messages.ActorIdsReply\x12J\n" + - "\x11AnnounceOwnership\x12\x1b.messages.OwnershipAnnounce\x1a\x18.messages.OwnerChangeAck\x12D\n" + - "\x0eAnnounceExpiry\x12\x18.messages.ExpiryAnnounce\x1a\x18.messages.OwnerChangeAck\x12<\n" + - "\aClosing\x12\x17.messages.ClosingNotice\x1a\x18.messages.OwnerChangeAckB.Z,git.tornberg.me/go-cart-actor/proto;messagesb\x06proto3" +var file_control_plane_proto_rawDesc = string([]byte{ + 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, + 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3c, 0x0a, 0x09, 0x50, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x6e, 0x69, + 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x75, 0x6e, + 0x69, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x33, 0x0a, 0x10, 0x4e, 0x65, 0x67, 0x6f, 0x74, 0x69, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6b, 0x6e, + 0x6f, 0x77, 0x6e, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0a, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x22, 0x26, 0x0a, 0x0e, 0x4e, + 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x68, 0x6f, + 0x73, 0x74, 0x73, 0x22, 0x21, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x73, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x04, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x46, 0x0a, 0x0e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x23, + 0x0a, 0x0d, 0x43, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, + 0x6f, 0x73, 0x74, 0x22, 0x39, 0x0a, 0x11, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, + 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x36, + 0x0a, 0x0e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x68, 0x6f, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x04, 0x52, 0x03, 0x69, 0x64, 0x73, 0x32, 0x8d, 0x03, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, + 0x0f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x13, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x41, 0x0a, 0x09, 0x4e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, + 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x4e, 0x65, + 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, + 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x67, 0x6f, 0x74, 0x69, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x73, 0x12, 0x0f, 0x2e, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x64, + 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4a, 0x0a, 0x11, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, + 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x1b, 0x2e, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, + 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x1a, 0x18, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x73, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, + 0x63, 0x6b, 0x12, 0x44, 0x0a, 0x0e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x45, 0x78, + 0x70, 0x69, 0x72, 0x79, 0x12, 0x18, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, + 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x1a, 0x18, + 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x63, 0x6b, 0x12, 0x3c, 0x0a, 0x07, 0x43, 0x6c, 0x6f, 0x73, + 0x69, 0x6e, 0x67, 0x12, 0x17, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x43, + 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x1a, 0x18, 0x2e, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x41, 0x63, 0x6b, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x2e, 0x74, 0x6f, + 0x72, 0x6e, 0x62, 0x65, 0x72, 0x67, 0x2e, 0x6d, 0x65, 0x2f, 0x67, 0x6f, 0x2d, 0x63, 0x61, 0x72, + 0x74, 0x2d, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_control_plane_proto_rawDescOnce sync.Once diff --git a/pkg/messages/control_plane_grpc.pb.go b/pkg/messages/control_plane_grpc.pb.go index 08e2815..d0c9cf5 100644 --- a/pkg/messages/control_plane_grpc.pb.go +++ b/pkg/messages/control_plane_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 v6.32.1 +// - protoc v5.29.3 // source: control_plane.proto package messages diff --git a/pkg/messages/messages.pb.go b/pkg/messages/messages.pb.go index fa19392..5c8d1f8 100644 --- a/pkg/messages/messages.pb.go +++ b/pkg/messages/messages.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.10 -// protoc v6.32.1 +// protoc-gen-go v1.36.5 +// protoc v5.29.3 // source: messages.proto package messages @@ -89,27 +89,26 @@ func (x *AddRequest) GetStoreId() string { return "" } -type SetCartRequest struct { +type ClearCartRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - Items []*AddRequest `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *SetCartRequest) Reset() { - *x = SetCartRequest{} +func (x *ClearCartRequest) Reset() { + *x = ClearCartRequest{} mi := &file_messages_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *SetCartRequest) String() string { +func (x *ClearCartRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SetCartRequest) ProtoMessage() {} +func (*ClearCartRequest) ProtoMessage() {} -func (x *SetCartRequest) ProtoReflect() protoreflect.Message { +func (x *ClearCartRequest) ProtoReflect() protoreflect.Message { mi := &file_messages_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -121,18 +120,11 @@ func (x *SetCartRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SetCartRequest.ProtoReflect.Descriptor instead. -func (*SetCartRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ClearCartRequest.ProtoReflect.Descriptor instead. +func (*ClearCartRequest) Descriptor() ([]byte, []int) { return file_messages_proto_rawDescGZIP(), []int{1} } -func (x *SetCartRequest) GetItems() []*AddRequest { - if x != nil { - return x.Items - } - return nil -} - type AddItem struct { state protoimpl.MessageState `protogen:"open.v1"` ItemId int64 `protobuf:"varint,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` @@ -987,118 +979,139 @@ func (x *InitializeCheckout) GetPaymentInProgress() bool { var File_messages_proto protoreflect.FileDescriptor -const file_messages_proto_rawDesc = "" + - "\n" + - "\x0emessages.proto\x12\bmessages\"\x7f\n" + - "\n" + - "AddRequest\x12\x1a\n" + - "\bquantity\x18\x01 \x01(\x05R\bquantity\x12\x10\n" + - "\x03sku\x18\x02 \x01(\tR\x03sku\x12\x18\n" + - "\acountry\x18\x03 \x01(\tR\acountry\x12\x1d\n" + - "\astoreId\x18\x04 \x01(\tH\x00R\astoreId\x88\x01\x01B\n" + - "\n" + - "\b_storeId\"<\n" + - "\x0eSetCartRequest\x12*\n" + - "\x05items\x18\x01 \x03(\v2\x14.messages.AddRequestR\x05items\"\xe9\x04\n" + - "\aAddItem\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\x03R\x06itemId\x12\x1a\n" + - "\bquantity\x18\x02 \x01(\x05R\bquantity\x12\x14\n" + - "\x05price\x18\x03 \x01(\x03R\x05price\x12\x1a\n" + - "\borgPrice\x18\t \x01(\x03R\borgPrice\x12\x10\n" + - "\x03sku\x18\x04 \x01(\tR\x03sku\x12\x12\n" + - "\x04name\x18\x05 \x01(\tR\x04name\x12\x14\n" + - "\x05image\x18\x06 \x01(\tR\x05image\x12\x14\n" + - "\x05stock\x18\a \x01(\x05R\x05stock\x12\x10\n" + - "\x03tax\x18\b \x01(\x05R\x03tax\x12\x14\n" + - "\x05brand\x18\r \x01(\tR\x05brand\x12\x1a\n" + - "\bcategory\x18\x0e \x01(\tR\bcategory\x12\x1c\n" + - "\tcategory2\x18\x0f \x01(\tR\tcategory2\x12\x1c\n" + - "\tcategory3\x18\x10 \x01(\tR\tcategory3\x12\x1c\n" + - "\tcategory4\x18\x11 \x01(\tR\tcategory4\x12\x1c\n" + - "\tcategory5\x18\x12 \x01(\tR\tcategory5\x12\x1e\n" + - "\n" + - "disclaimer\x18\n" + - " \x01(\tR\n" + - "disclaimer\x12 \n" + - "\varticleType\x18\v \x01(\tR\varticleType\x12\x1a\n" + - "\bsellerId\x18\x13 \x01(\tR\bsellerId\x12\x1e\n" + - "\n" + - "sellerName\x18\x14 \x01(\tR\n" + - "sellerName\x12\x18\n" + - "\acountry\x18\x15 \x01(\tR\acountry\x12\x1b\n" + - "\x06outlet\x18\f \x01(\tH\x00R\x06outlet\x88\x01\x01\x12\x1d\n" + - "\astoreId\x18\x16 \x01(\tH\x01R\astoreId\x88\x01\x01B\t\n" + - "\a_outletB\n" + - "\n" + - "\b_storeId\"\x1c\n" + - "\n" + - "RemoveItem\x12\x0e\n" + - "\x02Id\x18\x01 \x01(\x03R\x02Id\"<\n" + - "\x0eChangeQuantity\x12\x0e\n" + - "\x02id\x18\x01 \x01(\x03R\x02id\x12\x1a\n" + - "\bquantity\x18\x02 \x01(\x05R\bquantity\"\x86\x02\n" + - "\vSetDelivery\x12\x1a\n" + - "\bprovider\x18\x01 \x01(\tR\bprovider\x12\x14\n" + - "\x05items\x18\x02 \x03(\x03R\x05items\x12<\n" + - "\vpickupPoint\x18\x03 \x01(\v2\x15.messages.PickupPointH\x00R\vpickupPoint\x88\x01\x01\x12\x18\n" + - "\acountry\x18\x04 \x01(\tR\acountry\x12\x10\n" + - "\x03zip\x18\x05 \x01(\tR\x03zip\x12\x1d\n" + - "\aaddress\x18\x06 \x01(\tH\x01R\aaddress\x88\x01\x01\x12\x17\n" + - "\x04city\x18\a \x01(\tH\x02R\x04city\x88\x01\x01B\x0e\n" + - "\f_pickupPointB\n" + - "\n" + - "\b_addressB\a\n" + - "\x05_city\"\xf9\x01\n" + - "\x0eSetPickupPoint\x12\x1e\n" + - "\n" + - "deliveryId\x18\x01 \x01(\x03R\n" + - "deliveryId\x12\x0e\n" + - "\x02id\x18\x02 \x01(\tR\x02id\x12\x17\n" + - "\x04name\x18\x03 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x1d\n" + - "\aaddress\x18\x04 \x01(\tH\x01R\aaddress\x88\x01\x01\x12\x17\n" + - "\x04city\x18\x05 \x01(\tH\x02R\x04city\x88\x01\x01\x12\x15\n" + - "\x03zip\x18\x06 \x01(\tH\x03R\x03zip\x88\x01\x01\x12\x1d\n" + - "\acountry\x18\a \x01(\tH\x04R\acountry\x88\x01\x01B\a\n" + - "\x05_nameB\n" + - "\n" + - "\b_addressB\a\n" + - "\x05_cityB\x06\n" + - "\x04_zipB\n" + - "\n" + - "\b_country\"\xd6\x01\n" + - "\vPickupPoint\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x17\n" + - "\x04name\x18\x02 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x1d\n" + - "\aaddress\x18\x03 \x01(\tH\x01R\aaddress\x88\x01\x01\x12\x17\n" + - "\x04city\x18\x04 \x01(\tH\x02R\x04city\x88\x01\x01\x12\x15\n" + - "\x03zip\x18\x05 \x01(\tH\x03R\x03zip\x88\x01\x01\x12\x1d\n" + - "\acountry\x18\x06 \x01(\tH\x04R\acountry\x88\x01\x01B\a\n" + - "\x05_nameB\n" + - "\n" + - "\b_addressB\a\n" + - "\x05_cityB\x06\n" + - "\x04_zipB\n" + - "\n" + - "\b_country\" \n" + - "\x0eRemoveDelivery\x12\x0e\n" + - "\x02id\x18\x01 \x01(\x03R\x02id\"\xb9\x01\n" + - "\x13CreateCheckoutOrder\x12\x14\n" + - "\x05terms\x18\x01 \x01(\tR\x05terms\x12\x1a\n" + - "\bcheckout\x18\x02 \x01(\tR\bcheckout\x12\"\n" + - "\fconfirmation\x18\x03 \x01(\tR\fconfirmation\x12\x12\n" + - "\x04push\x18\x04 \x01(\tR\x04push\x12\x1e\n" + - "\n" + - "validation\x18\x05 \x01(\tR\n" + - "validation\x12\x18\n" + - "\acountry\x18\x06 \x01(\tR\acountry\"@\n" + - "\fOrderCreated\x12\x18\n" + - "\aorderId\x18\x01 \x01(\tR\aorderId\x12\x16\n" + - "\x06status\x18\x02 \x01(\tR\x06status\"\x06\n" + - "\x04Noop\"t\n" + - "\x12InitializeCheckout\x12\x18\n" + - "\aorderId\x18\x01 \x01(\tR\aorderId\x12\x16\n" + - "\x06status\x18\x02 \x01(\tR\x06status\x12,\n" + - "\x11paymentInProgress\x18\x03 \x01(\bR\x11paymentInProgressB.Z,git.tornberg.me/go-cart-actor/proto;messagesb\x06proto3" +var file_messages_proto_rawDesc = string([]byte{ + 0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x7f, 0x0a, 0x0a, 0x41, 0x64, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6b, 0x75, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x73, 0x6b, 0x75, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x1d, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x22, 0x12, 0x0a, 0x10, 0x43, + 0x6c, 0x65, 0x61, 0x72, 0x43, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0xe9, 0x04, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x69, + 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x69, 0x74, + 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x72, 0x67, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6f, 0x72, 0x67, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6b, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x73, 0x6b, 0x75, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, + 0x74, 0x6f, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x74, 0x61, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x33, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x34, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x35, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x35, + 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x72, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x72, + 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x18, 0x13, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x14, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x6c, + 0x65, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x6c, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, + 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x75, 0x74, 0x6c, 0x65, 0x74, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x0a, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x22, 0x3c, 0x0a, 0x0e, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x71, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x71, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x86, 0x02, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x44, + 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x03, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x69, 0x63, + 0x6b, 0x75, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x7a, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x7a, 0x69, 0x70, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, + 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x63, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x02, 0x52, 0x04, 0x63, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x69, 0x74, 0x79, + 0x22, 0xf9, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, + 0x79, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x63, + 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x63, 0x69, 0x74, + 0x79, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x7a, 0x69, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x03, 0x52, 0x03, 0x7a, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x07, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x69, 0x74, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x7a, 0x69, 0x70, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x22, 0xd6, 0x01, 0x0a, + 0x0b, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x63, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x63, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, + 0x03, 0x7a, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x03, 0x7a, 0x69, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, + 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x69, 0x74, + 0x79, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x7a, 0x69, 0x70, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x20, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, + 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0xb9, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x65, 0x72, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, + 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x75, 0x73, 0x68, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x72, 0x79, 0x22, 0x40, 0x0a, 0x0c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x06, 0x0a, 0x04, 0x4e, 0x6f, 0x6f, 0x70, 0x22, 0x74, 0x0a, + 0x12, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x6f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x11, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x2e, 0x74, 0x6f, 0x72, 0x6e, 0x62, + 0x65, 0x72, 0x67, 0x2e, 0x6d, 0x65, 0x2f, 0x67, 0x6f, 0x2d, 0x63, 0x61, 0x72, 0x74, 0x2d, 0x61, + 0x63, 0x74, 0x6f, 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_messages_proto_rawDescOnce sync.Once @@ -1115,7 +1128,7 @@ func file_messages_proto_rawDescGZIP() []byte { var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 13) var file_messages_proto_goTypes = []any{ (*AddRequest)(nil), // 0: messages.AddRequest - (*SetCartRequest)(nil), // 1: messages.SetCartRequest + (*ClearCartRequest)(nil), // 1: messages.ClearCartRequest (*AddItem)(nil), // 2: messages.AddItem (*RemoveItem)(nil), // 3: messages.RemoveItem (*ChangeQuantity)(nil), // 4: messages.ChangeQuantity @@ -1129,13 +1142,12 @@ var file_messages_proto_goTypes = []any{ (*InitializeCheckout)(nil), // 12: messages.InitializeCheckout } var file_messages_proto_depIdxs = []int32{ - 0, // 0: messages.SetCartRequest.items:type_name -> messages.AddRequest - 7, // 1: messages.SetDelivery.pickupPoint:type_name -> messages.PickupPoint - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name + 7, // 0: messages.SetDelivery.pickupPoint:type_name -> messages.PickupPoint + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name } func init() { file_messages_proto_init() }