Documentation
¶
Index ¶
- Constants
- type Module
- func (m *Module) CompensatePayment(ctx context.Context, input any) (any, error)
- func (m *Module) CompensatePaymentStep(sCtx mdk.StepContext) mdk.StepResult
- func (m *Module) CreateOrder(ctx context.Context, input any) (any, error)
- func (m *Module) CreateOrderFromCart(ctx context.Context, cartID string) (*Order, error)
- func (m *Module) CreateOrderStep(sCtx mdk.StepContext) mdk.StepResult
- func (m *Module) FieldResolvers() map[string]any
- func (m *Module) FinalizeOrder(ctx context.Context, input any) (any, error)
- func (m *Module) FinalizeOrderStep(sCtx mdk.StepContext) mdk.StepResult
- func (m *Module) GetOrder(ctx context.Context, id string) (*Order, error)
- func (m *Module) ID() string
- func (m *Module) Init(ctx context.Context, rt mdk.Runtime) error
- func (m *Module) ListCustomerOrders(ctx context.Context, customerID string) ([]*Order, error)
- func (m *Module) ListOrders(ctx context.Context) ([]*Order, error)
- func (m *Module) ListResources(ctx context.Context) ([]mdk.MCPResource, error)
- func (m *Module) Models() []any
- func (m *Module) Mutations() map[string]any
- func (m *Module) Queries() map[string]any
- func (m *Module) ReadResource(ctx context.Context, uri string) (string, error)
- func (m *Module) Repo() *Repository
- func (m *Module) Routes() []mdk.Route
- func (m *Module) Shutdown(ctx context.Context) error
- type Order
- type OrderItem
- type OrderStatus
- type Repository
- func (r *Repository) GetByID(ctx context.Context, id string) (*Order, error)
- func (r *Repository) List(ctx context.Context) ([]*Order, error)
- func (r *Repository) ListByCustomerID(ctx context.Context, customerID string) ([]*Order, error)
- func (r *Repository) Save(ctx context.Context, o *Order) error
Constants ¶
const ( StatusPending = "PENDING" StatusPaid = "PAID" StatusFulfilled = "FULFILLED" StatusCancelled = "CANCELLED" )
Order statuses.
const ( EventOrderCreated = "order.created" EventOrderPaid = "order.paid" )
Event types.
const ( TaskCreateOrder = "order.create" TaskFinalizeOrder = "order.finalize" TaskCompensatePayment = "order.compensate_payment" )
Workflow task names.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Module ¶
type Module struct {
// contains filtered or unexported fields
}
Module implements the mdk.Module interface for Order.
func (*Module) CompensatePayment ¶
CompensatePayment handles payment failure by cancelling the order.
func (*Module) CompensatePaymentStep ¶
func (m *Module) CompensatePaymentStep(sCtx mdk.StepContext) mdk.StepResult
CompensatePaymentStep wraps CompensatePayment to mdk.StepHandler.
func (*Module) CreateOrder ¶
CreateOrder initializes the order in PENDING state.
func (*Module) CreateOrderFromCart ¶
func (*Module) CreateOrderStep ¶
func (m *Module) CreateOrderStep(sCtx mdk.StepContext) mdk.StepResult
CreateOrderStep wraps CreateOrder to mdk.StepHandler.
func (*Module) FieldResolvers ¶
func (*Module) FinalizeOrder ¶
FinalizeOrder updates status to PAID.
func (*Module) FinalizeOrderStep ¶
func (m *Module) FinalizeOrderStep(sCtx mdk.StepContext) mdk.StepResult
FinalizeOrderStep wraps FinalizeOrder to mdk.StepHandler.
func (*Module) ListCustomerOrders ¶
func (*Module) ListResources ¶
func (*Module) ReadResource ¶
func (*Module) Repo ¶
func (m *Module) Repo() *Repository
type Order ¶
type Order struct {
ID string `gorm:"primaryKey" json:"id"`
CustomerID string `gorm:"index" json:"customer_id"`
Status OrderStatus `gorm:"not null" json:"status"`
TotalPrice float64 `json:"total_price"`
Items []OrderItem `gorm:"foreignKey:OrderID" json:"items"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
}
Order represents a finalized commerce transaction.
func (*Order) GetCustomerID ¶
func (*Order) GetOrderID ¶
type OrderItem ¶
type OrderItem struct {
ID string `gorm:"primaryKey" json:"id"`
OrderID string `gorm:"index" json:"order_id"`
ProductID string `json:"product_id"`
Quantity int `json:"quantity"`
UnitPrice float64 `json:"unit_price"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
}
OrderItem represents a line item in an order.
type OrderStatus ¶
type OrderStatus string
const ( OrderPending OrderStatus = "PENDING" OrderPaid OrderStatus = "PAID" OrderFulfilled OrderStatus = "FULFILLED" OrderCancelled OrderStatus = "CANCELLED" )
type Repository ¶
type Repository struct {
// contains filtered or unexported fields
}
Repository handles data access for orders.
func NewRepository ¶
func NewRepository(database *gorm.DB) *Repository
NewRepository creates a new Repository.
func (*Repository) List ¶
func (r *Repository) List(ctx context.Context) ([]*Order, error)
List retrieves all orders.
func (*Repository) ListByCustomerID ¶
ListByCustomerID retrieves all orders for a customer.