flamingo.me/flamingo-commerce/v3@v3.11.0/cart/infrastructure/defaultCustomerCartserviceAdapter.go (about) 1 package infrastructure 2 3 import ( 4 "context" 5 "errors" 6 7 "go.opencensus.io/trace" 8 9 "flamingo.me/flamingo/v3/core/auth" 10 "flamingo.me/flamingo/v3/framework/flamingo" 11 12 "flamingo.me/flamingo-commerce/v3/cart/domain/cart" 13 ) 14 15 type ( 16 //DefaultCustomerCartService defines the in memory customer cart service 17 DefaultCustomerCartService struct { 18 defaultBehaviour *DefaultCartBehaviour 19 logger flamingo.Logger 20 } 21 ) 22 23 var ( 24 _ cart.CustomerCartService = (*DefaultCustomerCartService)(nil) 25 ) 26 27 // Inject dependencies 28 func (cs *DefaultCustomerCartService) Inject( 29 behaviour *DefaultCartBehaviour, 30 logger flamingo.Logger, 31 ) { 32 cs.defaultBehaviour = behaviour 33 cs.logger = logger 34 } 35 36 // GetCart gets a customer cart from the in memory customer cart service 37 func (cs *DefaultCustomerCartService) GetCart(ctx context.Context, identity auth.Identity, _ string) (*cart.Cart, error) { 38 ctx, span := trace.StartSpan(ctx, "cart/DefaultCustomerCartService/GetCart") 39 defer span.End() 40 41 id := identity.Subject() 42 43 foundCart, err := cs.defaultBehaviour.GetCart(ctx, id) 44 if err == nil { 45 return foundCart, nil 46 } 47 48 if errors.Is(err, cart.ErrCartNotFound) { 49 cart := &cart.Cart{ID: id} 50 cart.BelongsToAuthenticatedUser = true 51 cart.AuthenticatedUserID = id 52 53 return cs.defaultBehaviour.StoreNewCart(ctx, cart) 54 } 55 56 return nil, err 57 } 58 59 // GetModifyBehaviour gets the cart order behaviour of the service 60 func (cs *DefaultCustomerCartService) GetModifyBehaviour(ctx context.Context, _ auth.Identity) (cart.ModifyBehaviour, error) { 61 _, span := trace.StartSpan(ctx, "cart/DefaultCustomerCartService/GetModifyBehaviour") 62 defer span.End() 63 64 return cs.defaultBehaviour, nil 65 } 66 67 // RestoreCart restores a previously used cart 68 // Deprecated: (deprecated in the interface) 69 func (cs *DefaultCustomerCartService) RestoreCart(ctx context.Context, _ auth.Identity, cart cart.Cart) (*cart.Cart, error) { 70 _, span := trace.StartSpan(ctx, "cart/DefaultCustomerCartService/RestoreCart") 71 defer span.End() 72 73 cs.logger.Warn("RestoreCart depricated") 74 return &cart, nil 75 }