order

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: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StatusPending   = "PENDING"
	StatusPaid      = "PAID"
	StatusFulfilled = "FULFILLED"
	StatusCancelled = "CANCELLED"
)

Order statuses.

View Source
const (
	EventOrderCreated = "order.created"
	EventOrderPaid    = "order.paid"
)

Event types.

View Source
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 NewModule

func NewModule() *Module

func (*Module) CompensatePayment

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

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

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

CreateOrder initializes the order in PENDING state.

func (*Module) CreateOrderFromCart

func (m *Module) CreateOrderFromCart(ctx context.Context, cartID string) (*Order, error)

func (*Module) CreateOrderStep

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

CreateOrderStep wraps CreateOrder to mdk.StepHandler.

func (*Module) FieldResolvers

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

func (*Module) FinalizeOrder

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

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) GetOrder

func (m *Module) GetOrder(ctx context.Context, id string) (*Order, 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) ListCustomerOrders

func (m *Module) ListCustomerOrders(ctx context.Context, customerID string) ([]*Order, error)

func (*Module) ListOrders

func (m *Module) ListOrders(ctx context.Context) ([]*Order, error)

func (*Module) ListResources

func (m *Module) ListResources(ctx context.Context) ([]mdk.MCPResource, 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) ReadResource

func (m *Module) ReadResource(ctx context.Context, uri string) (string, error)

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 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 (o *Order) GetCustomerID() string

func (*Order) GetOrderID

func (o *Order) GetOrderID() string

func (*Order) GetTotal

func (o *Order) GetTotal() float64

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) GetByID

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

GetByID retrieves an order by its ID.

func (*Repository) List

func (r *Repository) List(ctx context.Context) ([]*Order, error)

List retrieves all orders.

func (*Repository) ListByCustomerID

func (r *Repository) ListByCustomerID(ctx context.Context, customerID string) ([]*Order, error)

ListByCustomerID retrieves all orders for a customer.

func (*Repository) Save

func (r *Repository) Save(ctx context.Context, o *Order) error

Save persists an order to the database.

Jump to

Keyboard shortcuts

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