Documentation
¶
Index ¶
- type CreateSubscriptionAddonInput
- type CreateSubscriptionAddonQuantityInput
- type CreateSubscriptionAddonQuantityRepositoryInput
- type CreateSubscriptionAddonRepositoryInput
- type ListSubscriptionAddonRepositoryInput
- type ListSubscriptionAddonsInput
- type Service
- type SubscriptionAddon
- type SubscriptionAddonInstance
- type SubscriptionAddonQuantity
- type SubscriptionAddonQuantityRepository
- type SubscriptionAddonRateCard
- type SubscriptionAddonRepository
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CreateSubscriptionAddonInput ¶
type CreateSubscriptionAddonInput struct {
models.MetadataModel
AddonID string `json:"addonID"`
SubscriptionID string `json:"subscriptionID"`
InitialQuantity CreateSubscriptionAddonQuantityInput `json:"initialQuantity"`
}
func (CreateSubscriptionAddonInput) Validate ¶
func (i CreateSubscriptionAddonInput) Validate() error
type CreateSubscriptionAddonQuantityInput ¶
type CreateSubscriptionAddonQuantityInput struct {
ActiveFrom time.Time `json:"activeFrom"`
Quantity int `json:"quantity"`
}
func (CreateSubscriptionAddonQuantityInput) Validate ¶
func (i CreateSubscriptionAddonQuantityInput) Validate() error
type CreateSubscriptionAddonQuantityRepositoryInput ¶
type CreateSubscriptionAddonQuantityRepositoryInput struct {
ActiveFrom time.Time `json:"activeFrom"`
Quantity int `json:"quantity"`
}
SubscriptionAddonQuantity
type CreateSubscriptionAddonRepositoryInput ¶
type CreateSubscriptionAddonRepositoryInput struct {
models.MetadataModel
Name string `json:"name"`
Description *string `json:"description,omitempty"`
AddonID string `json:"addonID"`
SubscriptionID string `json:"subscriptionID"`
}
SubscriptionAddon
type ListSubscriptionAddonRepositoryInput ¶
type ListSubscriptionAddonRepositoryInput struct {
SubscriptionID string `json:"subscriptionID"`
pagination.Page
}
type ListSubscriptionAddonsInput ¶
type ListSubscriptionAddonsInput struct {
SubscriptionID string `json:"subscriptionID"`
pagination.Page
}
func (ListSubscriptionAddonsInput) Validate ¶
func (i ListSubscriptionAddonsInput) Validate() error
type Service ¶
type Service interface {
Create(ctx context.Context, namespace string, input CreateSubscriptionAddonInput) (*SubscriptionAddon, error)
Get(ctx context.Context, id models.NamespacedID) (*SubscriptionAddon, error)
List(ctx context.Context, namespace string, input ListSubscriptionAddonsInput) (pagination.PagedResponse[SubscriptionAddon], error)
ChangeQuantity(ctx context.Context, id models.NamespacedID, input CreateSubscriptionAddonQuantityInput) (*SubscriptionAddon, error)
}
type SubscriptionAddon ¶
type SubscriptionAddon struct {
models.NamespacedID
models.ManagedModel
models.MetadataModel
Name string `json:"name"`
Description *string `json:"description,omitempty"`
// Maybe break up to AddonID + AddonMeta?
Addon addon.Addon `json:"addon"`
SubscriptionID string `json:"subscriptionID"`
// RateCards is populated from the Addon's RateCards
RateCards []SubscriptionAddonRateCard `json:"rateCards"`
Quantities timeutil.Timeline[SubscriptionAddonQuantity] `json:"quantities"`
}
func (SubscriptionAddon) GetInstanceAt ¶
func (a SubscriptionAddon) GetInstanceAt(t time.Time) (SubscriptionAddonInstance, bool)
func (SubscriptionAddon) GetInstances ¶
func (a SubscriptionAddon) GetInstances() []SubscriptionAddonInstance
type SubscriptionAddonInstance ¶
type SubscriptionAddonInstance struct {
models.NamespacedID
models.ManagedModel
models.MetadataModel
models.CadencedModel
Name string `json:"name"`
Description *string `json:"description,omitempty"`
// AddonID string `json:"addonID"`
Addon addon.Addon `json:"addon"`
SubscriptionID string `json:"subscriptionID"`
RateCards []SubscriptionAddonRateCard `json:"rateCards"`
Quantity int `json:"quantity"`
}
SubscriptionAddonInstance is a "virtual" instance of a SubscriptionAddon: It merges the quantity information with the Addon information itself and represents the "effective" value of the addon for a given period.
type SubscriptionAddonQuantity ¶
type SubscriptionAddonQuantity struct {
models.NamespacedID
models.ManagedModel
ActiveFrom time.Time `json:"activeFrom"`
Quantity int `json:"quantity"`
}
func (SubscriptionAddonQuantity) AsTimed ¶
func (q SubscriptionAddonQuantity) AsTimed() timeutil.Timed[SubscriptionAddonQuantity]
type SubscriptionAddonQuantityRepository ¶
type SubscriptionAddonQuantityRepository interface {
Create(ctx context.Context, subscriptionAddonID models.NamespacedID, input CreateSubscriptionAddonQuantityRepositoryInput) (*SubscriptionAddonQuantity, error)
}
type SubscriptionAddonRateCard ¶
func (SubscriptionAddonRateCard) Apply ¶
func (a SubscriptionAddonRateCard) Apply(target productcatalog.RateCard) error
Apply applies the addon rate card to the target rate card
func (SubscriptionAddonRateCard) Restore ¶
func (a SubscriptionAddonRateCard) Restore(target productcatalog.RateCard) error
Restore restores the addon rate card to the target rate card
type SubscriptionAddonRepository ¶
type SubscriptionAddonRepository interface {
Create(ctx context.Context, namespace string, input CreateSubscriptionAddonRepositoryInput) (*models.NamespacedID, error)
Get(ctx context.Context, id models.NamespacedID) (*SubscriptionAddon, error)
List(ctx context.Context, namespace string, filter ListSubscriptionAddonRepositoryInput) (pagination.PagedResponse[SubscriptionAddon], error)
}
Source Files
¶
Click to show internal directories.
Click to hide internal directories.