oc-lib/models/common/pricing/pricing_profile.go

53 lines
2.0 KiB
Go
Raw Normal View History

package pricing
import (
"time"
)
type PricingProfileITF interface {
2025-01-13 11:24:07 +01:00
GetPrice(quantity float64, val float64, start time.Time, end time.Time, params ...string) (float64, error)
IsPurchased() bool
GetOverrideStrategyValue() int
}
type RefundType int
const (
REFUND_DEAD_END RefundType = iota
REFUND_ON_ERROR
REFUND_ON_EARLY_END
)
2024-12-16 12:17:20 +01:00
type AccessPricingProfile[T Strategy] struct { // only use for acces such as : DATA && PROCESSING
2025-01-14 11:28:16 +01:00
Pricing PricingStrategy[T] `json:"pricing,omitempty" bson:"pricing,omitempty"` // Price is the price of the resource
2024-12-16 12:17:20 +01:00
DefaultRefund RefundType `json:"default_refund" bson:"default_refund"` // DefaultRefund is the default refund type of the pricing
RefundRatio int32 `json:"refund_ratio" bson:"refund_ratio" default:"0"` // RefundRatio is the refund ratio if missing
}
2024-12-16 12:17:20 +01:00
func (b *AccessPricingProfile[T]) GetOverrideStrategyValue() int {
return -1
}
2024-12-16 12:17:20 +01:00
type ExploitPrivilegeStrategy int
const (
2024-12-16 12:17:20 +01:00
BASIC ExploitPrivilegeStrategy = iota
GARANTED_ON_DELAY
GARANTED
)
2024-12-16 12:17:20 +01:00
func (t ExploitPrivilegeStrategy) String() string {
return [...]string{"BASIC", "GARANTED_ON_DELAY", "GARANTED"}[t]
}
2024-12-16 12:17:20 +01:00
type ExploitPricingProfile[T Strategy] struct { // only use for exploit such as : STORAGE, COMPUTE, WORKFLOW
AccessPricingProfile[T]
AdditionnalRefundTypes []RefundType `json:"refund_types" bson:"refund_types"` // RefundTypes is the refund types of the pricing
2025-01-14 11:28:16 +01:00
PrivilegeStrategy ExploitPrivilegeStrategy `json:"privilege_strategy,omitempty" bson:"privilege_strategy,omitempty"` // Strategy is the strategy of the pricing
GarantedDelaySecond uint `json:"garanted_delay_second,omitempty" bson:"garanted_delay_second,omitempty"` // GarantedDelaySecond is the garanted delay of the pricing
2025-01-14 11:28:16 +01:00
Exceeding bool `json:"exceeding" bson:"exceeding"` // Exceeding is the exceeding of the bill
ExceedingRatio int32 `json:"exceeding_ratio" bson:"exceeding_ratio" default:"0"` // ExceedingRatio is the exceeding ratio of the bill
}