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  }