flamingo.me/flamingo-commerce/v3@v3.11.0/cart/infrastructure/defaultGuestCartserviceAdapter.go (about) 1 package infrastructure 2 3 import ( 4 "context" 5 "math/rand" 6 "strconv" 7 8 "go.opencensus.io/trace" 9 10 "flamingo.me/flamingo-commerce/v3/cart/domain/cart" 11 "flamingo.me/flamingo/v3/framework/flamingo" 12 ) 13 14 type ( 15 // DefaultGuestCartService defines the in memory guest cart service 16 DefaultGuestCartService struct { 17 defaultBehaviour *DefaultCartBehaviour 18 logger flamingo.Logger 19 } 20 ) 21 22 var ( 23 _ cart.GuestCartService = (*DefaultGuestCartService)(nil) 24 ) 25 26 // Inject dependencies 27 func (gcs *DefaultGuestCartService) Inject( 28 InMemoryCartOrderBehaviour *DefaultCartBehaviour, 29 logger flamingo.Logger, 30 ) { 31 gcs.defaultBehaviour = InMemoryCartOrderBehaviour 32 gcs.logger = logger 33 } 34 35 // GetCart fetches a cart from the in memory guest cart service 36 func (gcs *DefaultGuestCartService) GetCart(ctx context.Context, cartID string) (*cart.Cart, error) { 37 ctx, span := trace.StartSpan(ctx, "cart/DefaultGuestCartService/GetCart") 38 defer span.End() 39 40 cart, err := gcs.defaultBehaviour.GetCart(ctx, cartID) 41 return cart, err 42 } 43 44 // GetNewCart gets a new cart from the in memory guest cart service 45 func (gcs *DefaultGuestCartService) GetNewCart(ctx context.Context) (*cart.Cart, error) { 46 ctx, span := trace.StartSpan(ctx, "cart/DefaultGuestCartService/GetNewCart") 47 defer span.End() 48 49 return gcs.defaultBehaviour.StoreNewCart(ctx, &cart.Cart{ID: strconv.Itoa(rand.Int())}) 50 } 51 52 // GetModifyBehaviour returns the cart order behaviour of the service 53 func (gcs *DefaultGuestCartService) GetModifyBehaviour(ctx context.Context) (cart.ModifyBehaviour, error) { 54 _, span := trace.StartSpan(ctx, "cart/DefaultGuestCartService/GetModifyBehaviour") 55 defer span.End() 56 57 return gcs.defaultBehaviour, nil 58 } 59 60 // RestoreCart restores a previously used guest cart 61 // Deprecated: (deprecated in the interface) 62 func (gcs *DefaultGuestCartService) RestoreCart(ctx context.Context, cart cart.Cart) (*cart.Cart, error) { 63 ctx, span := trace.StartSpan(ctx, "cart/DefaultGuestCartService/RestoreCart") 64 defer span.End() 65 66 // RestoreCart restores a previously used cart 67 gcs.logger.Warn("RestoreCart deprecated") 68 return &cart, nil 69 }