package domain import ( "time" "github.com/gofrs/uuid/v5" ) // ShippingMethodType defines supported fulfillment modes. type ShippingMethodType string const ( ShippingMethodPickup ShippingMethodType = "pickup" ShippingMethodOwnDelivery ShippingMethodType = "own_delivery" ShippingMethodThirdParty ShippingMethodType = "third_party_delivery" ShippingOptionTypePickup = "pickup" ShippingOptionTypeDelivery = "delivery" ) // ShippingMethod stores vendor configuration for pickup or delivery. type ShippingMethod struct { ID uuid.UUID `db:"id" json:"id"` VendorID uuid.UUID `db:"vendor_id" json:"vendor_id"` Type ShippingMethodType `db:"type" json:"type"` Active bool `db:"active" json:"active"` PreparationMinutes int `db:"preparation_minutes" json:"preparation_minutes"` MaxRadiusKm float64 `db:"max_radius_km" json:"max_radius_km"` MinFeeCents int64 `db:"min_fee_cents" json:"min_fee_cents"` PricePerKmCents int64 `db:"price_per_km_cents" json:"price_per_km_cents"` FreeShippingThresholdCents *int64 `db:"free_shipping_threshold_cents" json:"free_shipping_threshold_cents,omitempty"` PickupAddress string `db:"pickup_address" json:"pickup_address"` PickupHours string `db:"pickup_hours" json:"pickup_hours"` CreatedAt time.Time `db:"created_at" json:"created_at"` UpdatedAt time.Time `db:"updated_at" json:"updated_at"` } // ShippingOption presents calculated options to the buyer. type ShippingOption struct { Type string `json:"type"` ValueCents int64 `json:"value_cents"` EstimatedMinutes int `json:"estimated_minutes"` Description string `json:"description"` DistanceKm float64 `json:"distance_km,omitempty"` }