more stuff
All checks were successful
Build and Publish / BuildAndDeployAmd64 (push) Successful in 27s
Build and Publish / BuildAndDeploy (push) Successful in 2m31s

This commit is contained in:
matst80
2024-11-14 20:13:40 +01:00
parent 1c6c9b1894
commit 9a80d74325
2 changed files with 75 additions and 0 deletions

View File

@@ -67,6 +67,7 @@ type CartGrain struct {
Items []*CartItem `json:"items"` Items []*CartItem `json:"items"`
TotalPrice int64 `json:"totalPrice"` TotalPrice int64 `json:"totalPrice"`
Deliveries []*CartDelivery `json:"deliveries,omitempty"` Deliveries []*CartDelivery `json:"deliveries,omitempty"`
Processing bool `json:"processing"`
} }
type Grain interface { type Grain interface {
@@ -339,6 +340,13 @@ func (c *CartGrain) HandleMessage(message *Message, isReplay bool) (*FrameWithPa
Price: 49, Price: 49,
Items: items, Items: items,
}) })
c.Processing = true
go func() {
time.Sleep(5 * time.Second)
c.mu.Lock()
c.Processing = false
c.mu.Unlock()
}()
} }
case RemoveDeliveryType: case RemoveDeliveryType:
msg, ok := message.Content.(*messages.RemoveDelivery) msg, ok := message.Content.(*messages.RemoveDelivery)

View File

@@ -115,11 +115,78 @@ func (s *PoolServer) HandleSetDelivery(w http.ResponseWriter, r *http.Request) e
return s.WriteResult(w, data) return s.WriteResult(w, data)
} }
func (s *PoolServer) HandleSetPickupPoint(w http.ResponseWriter, r *http.Request) error {
id := r.PathValue("id")
deliveryIdString := r.PathValue("deliveryId")
deliveryId, err := strconv.Atoi(deliveryIdString)
if err != nil {
return err
}
pickupPoint := messages.PickupPoint{}
err = json.NewDecoder(r.Body).Decode(&pickupPoint)
if err != nil {
return err
}
reply, err := s.pool.Process(ToCartId(id), Message{
Type: SetPickupPointType,
Content: &messages.SetPickupPoint{
DeliveryId: int64(deliveryId),
Id: pickupPoint.Id,
Name: pickupPoint.Name,
Address: pickupPoint.Address,
City: pickupPoint.City,
Zip: pickupPoint.Zip,
Country: pickupPoint.Country,
},
})
if err != nil {
return err
}
return s.WriteResult(w, reply)
}
func (s *PoolServer) HandleRemoveDelivery(w http.ResponseWriter, r *http.Request) error {
id := r.PathValue("id")
deliveryIdString := r.PathValue("deliveryId")
deliveryId, err := strconv.Atoi(deliveryIdString)
if err != nil {
return err
}
reply, err := s.pool.Process(ToCartId(id), Message{
Type: RemoveDeliveryType,
Content: &messages.RemoveDelivery{Id: int64(deliveryId)},
})
if err != nil {
return err
}
return s.WriteResult(w, reply)
}
func (s *PoolServer) HandleQuantityChange(w http.ResponseWriter, r *http.Request) error {
id := r.PathValue("id")
itemIdString := r.PathValue("itemId")
itemId, err := strconv.Atoi(itemIdString)
if err != nil {
return err
}
reply, err := s.pool.Process(ToCartId(id), Message{
Type: ChangeQuantityType,
Content: &messages.ChangeQuantity{Id: int64(itemId)},
})
if err != nil {
return err
}
return s.WriteResult(w, reply)
}
func (s *PoolServer) Serve() *http.ServeMux { func (s *PoolServer) Serve() *http.ServeMux {
mux := http.NewServeMux() mux := http.NewServeMux()
mux.HandleFunc("GET /{id}", ErrorHandler(s.HandleGet)) mux.HandleFunc("GET /{id}", ErrorHandler(s.HandleGet))
mux.HandleFunc("GET /{id}/add/{sku}", ErrorHandler(s.HandleAddSku)) mux.HandleFunc("GET /{id}/add/{sku}", ErrorHandler(s.HandleAddSku))
mux.HandleFunc("DELETE /{id}/{itemId}", ErrorHandler(s.HandleDeleteItem)) mux.HandleFunc("DELETE /{id}/{itemId}", ErrorHandler(s.HandleDeleteItem))
mux.HandleFunc("PUT /{id}/{itemId}", ErrorHandler(s.HandleQuantityChange))
mux.HandleFunc("POST /{id}/delivery", ErrorHandler(s.HandleSetDelivery)) mux.HandleFunc("POST /{id}/delivery", ErrorHandler(s.HandleSetDelivery))
mux.HandleFunc("DELETE /{id}/delivery/{deliveryId}", ErrorHandler(s.HandleRemoveDelivery))
mux.HandleFunc("PUT /{id}/delivery/{deliveryId}/pickupPoint", ErrorHandler(s.HandleSetPickupPoint))
return mux return mux
} }