update stuff
Some checks failed
Build and Publish / BuildAndDeploy (push) Failing after 3m53s
Build and Publish / BuildAndDeployAmd64 (push) Failing after 42s

This commit is contained in:
matst80
2025-02-27 20:20:21 +01:00
parent d35a87e549
commit 03123bac89
5 changed files with 67 additions and 0 deletions

View File

@@ -235,6 +235,19 @@ func (c *CartGrain) HandleMessage(message *Message, isReplay bool) (*FrameWithPa
grainMutations.Inc() grainMutations.Inc()
var err error var err error
switch message.Type { switch message.Type {
case SetCartItemsType:
msg, ok := message.Content.(*messages.SetCartItems)
if !ok {
err = fmt.Errorf("expected SetCartItems")
} else {
c.mu.Lock()
c.Items = make([]*CartItem, 0, len(msg.Items))
c.mu.Unlock()
for _, item := range msg.Items {
c.AddItem(item.Sku, int(item.Quantity))
}
}
case AddRequestType: case AddRequestType:
msg, ok := message.Content.(*messages.AddRequest) msg, ok := message.Content.(*messages.AddRequest)
if !ok { if !ok {

View File

@@ -16,6 +16,7 @@ var Handlers = map[uint16]MessageHandler{
RemoveItemType: &RemoveItemHandler{}, RemoveItemType: &RemoveItemHandler{},
RemoveDeliveryType: &RemoveDeliveryHandler{}, RemoveDeliveryType: &RemoveDeliveryHandler{},
CreateCheckoutOrderType: &CheckoutHandler{}, CreateCheckoutOrderType: &CheckoutHandler{},
SetCartItemsType: &SetCartItemsHandler{},
} }
func GetMessageHandler(t uint16) (MessageHandler, error) { func GetMessageHandler(t uint16) (MessageHandler, error) {
@@ -35,6 +36,37 @@ type TypedMessageHandler struct {
Type uint16 Type uint16
} }
type SetCartItemsHandler struct {
TypedMessageHandler
}
func (h *SetCartItemsHandler) Write(m *Message, w io.Writer) error {
messageBytes, err := proto.Marshal(m.Content.(*messages.SetCartRequest))
if err != nil {
return err
}
w.Write(messageBytes)
return nil
}
func (h *SetCartItemsHandler) Read(data []byte) (interface{}, error) {
msg := &messages.SetCartRequest{}
err := proto.Unmarshal(data, msg)
if err != nil {
return nil, err
}
return msg, nil
}
func (h *SetCartItemsHandler) Is(m *Message) bool {
if m.Type != AddRequestType {
return false
}
_, ok := m.Content.(*messages.SetCartRequest)
return ok
}
type AddRequestHandler struct { type AddRequestHandler struct {
TypedMessageHandler TypedMessageHandler
} }

View File

@@ -10,4 +10,5 @@ const (
SetDeliveryType = 7 SetDeliveryType = 7
SetPickupPointType = 8 SetPickupPointType = 8
CreateCheckoutOrderType = 9 CreateCheckoutOrderType = 9
SetCartItemsType = 10
) )

View File

@@ -182,6 +182,22 @@ func (s *PoolServer) HandleQuantityChange(w http.ResponseWriter, r *http.Request
return s.WriteResult(w, reply) return s.WriteResult(w, reply)
} }
func (s *PoolServer) HandleSetCartItems(w http.ResponseWriter, r *http.Request, id CartId) error {
setCartItems := messages.SetCartItems{}
err := json.NewDecoder(r.Body).Decode(&setCartItems)
if err != nil {
return err
}
reply, err := s.pool.Process(id, Message{
Type: SetCartItemsType,
Content: &setCartItems,
})
if err != nil {
return err
}
return s.WriteResult(w, reply)
}
func (s *PoolServer) HandleAddRequest(w http.ResponseWriter, r *http.Request, id CartId) error { func (s *PoolServer) HandleAddRequest(w http.ResponseWriter, r *http.Request, id CartId) error {
addRequest := messages.AddRequest{} addRequest := messages.AddRequest{}
err := json.NewDecoder(r.Body).Decode(&addRequest) err := json.NewDecoder(r.Body).Decode(&addRequest)
@@ -291,6 +307,7 @@ func (s *PoolServer) Serve() *http.ServeMux {
mux.HandleFunc("GET /", ErrorHandler(CookieCartIdHandler(s.HandleGet))) mux.HandleFunc("GET /", ErrorHandler(CookieCartIdHandler(s.HandleGet)))
mux.HandleFunc("GET /add/{sku}", ErrorHandler(CookieCartIdHandler(s.HandleAddSku))) mux.HandleFunc("GET /add/{sku}", ErrorHandler(CookieCartIdHandler(s.HandleAddSku)))
mux.HandleFunc("POST /", ErrorHandler(CookieCartIdHandler(s.HandleAddRequest))) mux.HandleFunc("POST /", ErrorHandler(CookieCartIdHandler(s.HandleAddRequest)))
mux.HandleFunc("POST /set", ErrorHandler(CookieCartIdHandler(s.HandleSetCartItems)))
mux.HandleFunc("DELETE /{itemId}", ErrorHandler(CookieCartIdHandler(s.HandleDeleteItem))) mux.HandleFunc("DELETE /{itemId}", ErrorHandler(CookieCartIdHandler(s.HandleDeleteItem)))
mux.HandleFunc("PUT /", ErrorHandler(CookieCartIdHandler(s.HandleQuantityChange))) mux.HandleFunc("PUT /", ErrorHandler(CookieCartIdHandler(s.HandleQuantityChange)))
mux.HandleFunc("POST /delivery", ErrorHandler(CookieCartIdHandler(s.HandleSetDelivery))) mux.HandleFunc("POST /delivery", ErrorHandler(CookieCartIdHandler(s.HandleSetDelivery)))

View File

@@ -7,6 +7,10 @@ message AddRequest {
string Sku = 2; string Sku = 2;
} }
message SetCartRequest {
repeated AddRequest Items = 1;
}
message AddItem { message AddItem {
int32 Quantity = 2; int32 Quantity = 2;
int64 Price = 3; int64 Price = 3;