From f9fa569d41bed45eed8453783ceb85147bf6fb28 Mon Sep 17 00:00:00 2001 From: Ahmet Alp Balkan Date: Thu, 28 Jun 2018 00:57:12 -0700 Subject: [PATCH] checkoutservice: empty cart after order Signed-off-by: Ahmet Alp Balkan --- src/checkoutservice/main.go | 15 +++++++++++++++ src/frontend/templates/footer.html | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/checkoutservice/main.go b/src/checkoutservice/main.go index 78b4b94..15cf5fa 100644 --- a/src/checkoutservice/main.go +++ b/src/checkoutservice/main.go @@ -96,6 +96,8 @@ func (cs *checkoutService) PlaceOrder(ctx context.Context, req *pb.PlaceOrderReq return nil, status.Errorf(codes.Unavailable, "shipping error: %+v", err) } + _ = cs.emptyUserCart(ctx, req.UserId) + orderResult := &pb.OrderResult{ OrderId: orderID.String(), ShippingTrackingId: shippingTrackingID, @@ -175,6 +177,19 @@ func (cs *checkoutService) getUserCart(ctx context.Context, userID string) ([]*p return cart.GetItems(), nil } +func (cs *checkoutService) emptyUserCart(ctx context.Context, userID string) error { + conn, err := grpc.DialContext(ctx, cs.cartSvcAddr, grpc.WithInsecure()) + if err != nil { + return fmt.Errorf("could not connect cart service: %+v", err) + } + defer conn.Close() + + if _, err = pb.NewCartServiceClient(conn).EmptyCart(ctx, &pb.EmptyCartRequest{UserId: userID}); err != nil { + return fmt.Errorf("failed to empty user cart during checkout: %+v", err) + } + return nil +} + func (cs *checkoutService) prepOrderItems(ctx context.Context, items []*pb.CartItem, userCurrency string) ([]*pb.OrderItem, error) { out := make([]*pb.OrderItem, len(items)) diff --git a/src/frontend/templates/footer.html b/src/frontend/templates/footer.html index acfdca7..9d94cde 100644 --- a/src/frontend/templates/footer.html +++ b/src/frontend/templates/footer.html @@ -1,6 +1,6 @@ {{ define "footer" }} - This is a demo application. ({{$.session_id}}) + This is a demo application, not a real retail business. ({{$.session_id}}) {{ end }}