Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type PricingModel ¶
type PricingModel string
PricingModel defines how usage is converted to cost.
const ( PerUnit PricingModel = "per_unit" Tiered PricingModel = "tiered" Volume PricingModel = "volume" )
type PricingRule ¶
type PricingRule struct {
mixin.Model[PricingRule]
MeterId string `json:"meterId"`
PlanId string `json:"planId,omitempty"`
PricingType PricingModel `json:"model"`
Currency currency.Type `json:"currency"`
UnitPrice int64 `json:"unitPrice"` // cents, for per_unit model
Tiers []Tier `json:"tiers,omitempty" datastore:"-"`
Tiers_ string `json:"-" datastore:",noindex"`
Metadata Map `json:"metadata,omitempty" datastore:"-"`
Metadata_ string `json:"-" datastore:",noindex"`
}
PricingRule maps a meter to a cost model. For per-unit pricing, UnitPrice is used directly. For tiered/volume pricing, the Tiers array defines the pricing bands.
func New ¶
func New(db *datastore.Datastore) *PricingRule
func (*PricingRule) CalculateCost ¶
func (p *PricingRule) CalculateCost(quantity int64) int64
CalculateCost computes the total cost in cents for a given usage quantity.
func (*PricingRule) Validator ¶
func (p *PricingRule) Validator() *val.Validator
Click to show internal directories.
Click to hide internal directories.