cart

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 6, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AddItemInput

type AddItemInput struct {
	ProductID string  `json:"productId"`
	Quantity  int     `json:"quantity"`
	Price     float64 `json:"price"`
}

type Cart

type Cart struct {
	ID         string         `gorm:"primaryKey" json:"id"`
	CustomerID string         `gorm:"index" json:"customer_id"`
	Status     CartStatus     `gorm:"not null" json:"status"`
	Items      []CartItem     `gorm:"foreignKey:CartID" json:"items"`
	CreatedAt  time.Time      `json:"created_at"`
	UpdatedAt  time.Time      `json:"updated_at"`
	DeletedAt  gorm.DeletedAt `gorm:"index" json:"-"`
}

Cart represents a temporary shopping session.

type CartItem

type CartItem struct {
	ID        string         `gorm:"primaryKey" json:"id"`
	CartID    string         `gorm:"index" json:"cart_id"`
	ProductID string         `json:"product_id"`
	Quantity  int            `json:"quantity"`
	Price     float64        `json:"price"` // Price at the time of adding to cart
	CreatedAt time.Time      `json:"created_at"`
	UpdatedAt time.Time      `json:"updated_at"`
	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
}

CartItem represents an item within a cart.

type CartStatus

type CartStatus string
const (
	CartActive    CartStatus = "ACTIVE"
	CartCompleted CartStatus = "COMPLETED"
	CartAbandoned CartStatus = "ABANDONED"
)

type Module

type Module struct {
	// contains filtered or unexported fields
}

Module implements the mdk.Module interface for Cart.

func NewModule

func NewModule() *Module

func (*Module) AddItem

func (m *Module) AddItem(ctx context.Context, input any) (any, error)

AddItem handles adding an item to a cart via workflow.

func (*Module) AddItemStep

func (m *Module) AddItemStep(sCtx mdk.StepContext) mdk.StepResult

AddItemStep wraps AddItem to conform to mdk.StepHandler.

func (*Module) AddItemToCart

func (m *Module) AddItemToCart(ctx context.Context, cartID string, input AddItemInput) (*Cart, error)

func (*Module) Checkout

func (m *Module) Checkout(ctx context.Context, input any) (any, error)

Checkout handles finalizing the cart.

func (*Module) CheckoutCart

func (m *Module) CheckoutCart(ctx context.Context, cartID string) (bool, error)

func (*Module) CheckoutStep

func (m *Module) CheckoutStep(sCtx mdk.StepContext) mdk.StepResult

CheckoutStep wraps Checkout to conform to mdk.StepHandler.

func (*Module) FieldResolvers

func (m *Module) FieldResolvers() map[string]any

func (*Module) GetActiveCart

func (m *Module) GetActiveCart(ctx context.Context, customerID string) (*Cart, error)

func (*Module) GetCart

func (m *Module) GetCart(ctx context.Context, id string) (*Cart, error)

func (*Module) ID

func (m *Module) ID() string

func (*Module) Init

func (m *Module) Init(ctx context.Context, rt mdk.Runtime) error

func (*Module) Models

func (m *Module) Models() []any

func (*Module) Mutations

func (m *Module) Mutations() map[string]any

func (*Module) Queries

func (m *Module) Queries() map[string]any

func (*Module) RemoveItem

func (m *Module) RemoveItem(ctx context.Context, input any) (any, error)

RemoveItem handles removing an item from a cart.

func (*Module) RemoveItemFromCart

func (m *Module) RemoveItemFromCart(ctx context.Context, cartID string, itemID string) (*Cart, error)

func (*Module) RemoveItemStep

func (m *Module) RemoveItemStep(sCtx mdk.StepContext) mdk.StepResult

RemoveItemStep wraps RemoveItem to conform to mdk.StepHandler.

func (*Module) Repo

func (m *Module) Repo() *Repository

func (*Module) Routes

func (m *Module) Routes() []mdk.Route

func (*Module) Shutdown

func (m *Module) Shutdown(ctx context.Context) error

type Repository

type Repository struct {
	// contains filtered or unexported fields
}

Repository handles data access for carts.

func NewRepository

func NewRepository(database *gorm.DB) *Repository

NewRepository creates a new Repository.

func (*Repository) ClearItems

func (r *Repository) ClearItems(ctx context.Context, cartID string) error

ClearItems removes all items from a cart.

func (*Repository) DeleteItem

func (r *Repository) DeleteItem(ctx context.Context, cartID, itemID string) error

DeleteItem removes an item from a cart.

func (*Repository) GetActiveByCustomerID

func (r *Repository) GetActiveByCustomerID(ctx context.Context, customerID string) (*Cart, error)

GetActiveByCustomerID retrieves the active cart for a customer.

func (*Repository) GetByID

func (r *Repository) GetByID(ctx context.Context, id string) (*Cart, error)

GetByID retrieves a cart by its ID.

func (*Repository) Save

func (r *Repository) Save(ctx context.Context, c *Cart) error

Save persists a cart to the database.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL