package contract import ( "github.com/google/uuid" ) type SelfOrderMenuRequest struct { TableID uuid.UUID `json:"table_id" validate:"required"` CustomerName string `json:"customer_name" validate:"required"` Phone *string `json:"phone,omitempty"` } type SelfOrderMenuResponse struct { OutletName string `json:"outlet_name"` TableName string `json:"table_name"` Categories []SelfOrderMenuCategory `json:"categories"` } type SelfOrderMenuCategory struct { ID uuid.UUID `json:"id"` Name string `json:"name"` Description *string `json:"description,omitempty"` Order int `json:"order"` Products []SelfOrderMenuItem `json:"products"` } type SelfOrderMenuItem struct { ID uuid.UUID `json:"id"` Name string `json:"name"` Description *string `json:"description,omitempty"` Price float64 `json:"price"` ImageURL *string `json:"image_url,omitempty"` Variants []SelfOrderMenuVariant `json:"variants,omitempty"` } type SelfOrderMenuVariant struct { ID uuid.UUID `json:"id"` Name string `json:"name"` PriceModifier float64 `json:"price_modifier"` } type SelfOrderCreateOrderRequest struct { TableID uuid.UUID `json:"table_id" validate:"required"` CustomerName string `json:"customer_name" validate:"required"` Phone *string `json:"phone,omitempty"` OrderItems []SelfOrderCreateOrderItem `json:"order_items" validate:"required,min=1,dive"` } type SelfOrderCreateOrderItem struct { ProductID uuid.UUID `json:"product_id" validate:"required"` ProductVariantID *uuid.UUID `json:"product_variant_id,omitempty"` Quantity int `json:"quantity" validate:"required,min=1"` Notes *string `json:"notes,omitempty"` } type SelfOrderListCategoriesRequest struct { TableID string `form:"table_id" validate:"required"` } type SelfOrderCategoryItem struct { ID uuid.UUID `json:"id"` Name string `json:"name"` Description *string `json:"description,omitempty"` Order int `json:"order"` } type SelfOrderListCategoriesResponse struct { Categories []SelfOrderCategoryItem `json:"categories"` }