diff --git a/pool-server.go b/pool-server.go index 948ac75..3928c68 100644 --- a/pool-server.go +++ b/pool-server.go @@ -179,10 +179,29 @@ func (s *PoolServer) HandleQuantityChange(w http.ResponseWriter, r *http.Request return s.WriteResult(w, reply) } +func (s *PoolServer) HandleAddRequest(w http.ResponseWriter, r *http.Request) error { + id := r.PathValue("id") + + pickupPoint := messages.AddRequest{} + err := json.NewDecoder(r.Body).Decode(&pickupPoint) + if err != nil { + return err + } + reply, err := s.pool.Process(ToCartId(id), Message{ + Type: AddRequestType, + Content: &pickupPoint, + }) + if err != nil { + return err + } + return s.WriteResult(w, reply) +} + func (s *PoolServer) Serve() *http.ServeMux { mux := http.NewServeMux() mux.HandleFunc("GET /{id}", ErrorHandler(s.HandleGet)) mux.HandleFunc("GET /{id}/add/{sku}", ErrorHandler(s.HandleAddSku)) + mux.HandleFunc("POST /{id}", ErrorHandler(s.HandleAddRequest)) mux.HandleFunc("DELETE /{id}/{itemId}", ErrorHandler(s.HandleDeleteItem)) mux.HandleFunc("PUT /{id}/{itemId}", ErrorHandler(s.HandleQuantityChange)) mux.HandleFunc("POST /{id}/delivery", ErrorHandler(s.HandleSetDelivery)) diff --git a/proto/messages.pb.go b/proto/messages.pb.go index 1ab09dd..6995f0b 100644 --- a/proto/messages.pb.go +++ b/proto/messages.pb.go @@ -25,8 +25,8 @@ type AddRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Quantity int32 `protobuf:"varint,1,opt,name=Quantity,proto3" json:"Quantity,omitempty"` - Sku string `protobuf:"bytes,2,opt,name=Sku,proto3" json:"Sku,omitempty"` + Quantity int32 `protobuf:"varint,1,opt,name=Quantity,proto3" json:"quantity,omitempty"` + Sku string `protobuf:"bytes,2,opt,name=Sku,proto3" json:"sku,omitempty"` } func (x *AddRequest) Reset() { @@ -78,17 +78,17 @@ type AddItem struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Quantity int32 `protobuf:"varint,2,opt,name=Quantity,proto3" json:"Quantity,omitempty"` - Price int64 `protobuf:"varint,3,opt,name=Price,proto3" json:"Price,omitempty"` - OrgPrice int64 `protobuf:"varint,9,opt,name=OrgPrice,proto3" json:"OrgPrice,omitempty"` - Sku string `protobuf:"bytes,4,opt,name=Sku,proto3" json:"Sku,omitempty"` - Name string `protobuf:"bytes,5,opt,name=Name,proto3" json:"Name,omitempty"` - Image string `protobuf:"bytes,6,opt,name=Image,proto3" json:"Image,omitempty"` - Stock int32 `protobuf:"varint,7,opt,name=Stock,proto3" json:"Stock,omitempty"` - Tax int32 `protobuf:"varint,8,opt,name=Tax,proto3" json:"Tax,omitempty"` - Disclaimer string `protobuf:"bytes,10,opt,name=Disclaimer,proto3" json:"Disclaimer,omitempty"` - ArticleType string `protobuf:"bytes,11,opt,name=ArticleType,proto3" json:"ArticleType,omitempty"` - Outlet *string `protobuf:"bytes,12,opt,name=Outlet,proto3,oneof" json:"Outlet,omitempty"` + Quantity int32 `protobuf:"varint,2,opt,name=Quantity,proto3" json:"quantity,omitempty"` + Price int64 `protobuf:"varint,3,opt,name=Price,proto3" json:"price,omitempty"` + OrgPrice int64 `protobuf:"varint,9,opt,name=OrgPrice,proto3" json:"orgPrice,omitempty"` + Sku string `protobuf:"bytes,4,opt,name=Sku,proto3" json:"sku,omitempty"` + Name string `protobuf:"bytes,5,opt,name=Name,proto3" json:"name,omitempty"` + Image string `protobuf:"bytes,6,opt,name=Image,proto3" json:"image,omitempty"` + Stock int32 `protobuf:"varint,7,opt,name=Stock,proto3" json:"stock,omitempty"` + Tax int32 `protobuf:"varint,8,opt,name=Tax,proto3" json:"tax,omitempty"` + Disclaimer string `protobuf:"bytes,10,opt,name=Disclaimer,proto3" json:"disclaimer,omitempty"` + ArticleType string `protobuf:"bytes,11,opt,name=ArticleType,proto3" json:"articleType,omitempty"` + Outlet *string `protobuf:"bytes,12,opt,name=Outlet,proto3,oneof" json:"outlet,omitempty"` } func (x *AddItem) Reset() { @@ -203,7 +203,7 @@ type RemoveItem struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"id,omitempty"` } func (x *RemoveItem) Reset() { @@ -248,8 +248,8 @@ type ChangeQuantity struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` - Quantity int32 `protobuf:"varint,2,opt,name=Quantity,proto3" json:"Quantity,omitempty"` + Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"id,omitempty"` + Quantity int32 `protobuf:"varint,2,opt,name=Quantity,proto3" json:"quantity,omitempty"` } func (x *ChangeQuantity) Reset() { @@ -301,9 +301,9 @@ type SetDelivery struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Provider string `protobuf:"bytes,1,opt,name=Provider,proto3" json:"Provider,omitempty"` - Items []int64 `protobuf:"varint,2,rep,packed,name=Items,proto3" json:"Items,omitempty"` - PickupPoint *PickupPoint `protobuf:"bytes,3,opt,name=PickupPoint,proto3,oneof" json:"PickupPoint,omitempty"` + Provider string `protobuf:"bytes,1,opt,name=Provider,proto3" json:"provider,omitempty"` + Items []int64 `protobuf:"varint,2,rep,packed,name=Items,proto3" json:"items,omitempty"` + PickupPoint *PickupPoint `protobuf:"bytes,3,opt,name=PickupPoint,proto3,oneof" json:"pickupPoint,omitempty"` } func (x *SetDelivery) Reset() { @@ -362,13 +362,13 @@ type SetPickupPoint struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DeliveryId int64 `protobuf:"varint,1,opt,name=DeliveryId,proto3" json:"DeliveryId,omitempty"` - Id string `protobuf:"bytes,2,opt,name=Id,proto3" json:"Id,omitempty"` - Name *string `protobuf:"bytes,3,opt,name=Name,proto3,oneof" json:"Name,omitempty"` - Address *string `protobuf:"bytes,4,opt,name=Address,proto3,oneof" json:"Address,omitempty"` - City *string `protobuf:"bytes,5,opt,name=City,proto3,oneof" json:"City,omitempty"` - Zip *string `protobuf:"bytes,6,opt,name=Zip,proto3,oneof" json:"Zip,omitempty"` - Country *string `protobuf:"bytes,7,opt,name=Country,proto3,oneof" json:"Country,omitempty"` + DeliveryId int64 `protobuf:"varint,1,opt,name=DeliveryId,proto3" json:"deliveryId,omitempty"` + Id string `protobuf:"bytes,2,opt,name=Id,proto3" json:"id,omitempty"` + Name *string `protobuf:"bytes,3,opt,name=Name,proto3,oneof" json:"name,omitempty"` + Address *string `protobuf:"bytes,4,opt,name=Address,proto3,oneof" json:"address,omitempty"` + City *string `protobuf:"bytes,5,opt,name=City,proto3,oneof" json:"city,omitempty"` + Zip *string `protobuf:"bytes,6,opt,name=Zip,proto3,oneof" json:"zip,omitempty"` + Country *string `protobuf:"bytes,7,opt,name=Country,proto3,oneof" json:"country,omitempty"` } func (x *SetPickupPoint) Reset() { @@ -455,12 +455,12 @@ type PickupPoint struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` - Name *string `protobuf:"bytes,2,opt,name=Name,proto3,oneof" json:"Name,omitempty"` - Address *string `protobuf:"bytes,3,opt,name=Address,proto3,oneof" json:"Address,omitempty"` - City *string `protobuf:"bytes,4,opt,name=City,proto3,oneof" json:"City,omitempty"` - Zip *string `protobuf:"bytes,5,opt,name=Zip,proto3,oneof" json:"Zip,omitempty"` - Country *string `protobuf:"bytes,6,opt,name=Country,proto3,oneof" json:"Country,omitempty"` + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"id,omitempty"` + Name *string `protobuf:"bytes,2,opt,name=Name,proto3,oneof" json:"name,omitempty"` + Address *string `protobuf:"bytes,3,opt,name=Address,proto3,oneof" json:"address,omitempty"` + City *string `protobuf:"bytes,4,opt,name=City,proto3,oneof" json:"city,omitempty"` + Zip *string `protobuf:"bytes,5,opt,name=Zip,proto3,oneof" json:"zip,omitempty"` + Country *string `protobuf:"bytes,6,opt,name=Country,proto3,oneof" json:"country,omitempty"` } func (x *PickupPoint) Reset() { @@ -540,7 +540,7 @@ type RemoveDelivery struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"id,omitempty"` } func (x *RemoveDelivery) Reset() {