Leon4gr45's picture
Upload folder using huggingface_hub (part 7)
16cdcb7 verified
Raw
History Blame Contribute Delete
2.36 kB
package subscriptionworkflow
import (
"context"
"errors"
"time"
"github.com/openmeterio/openmeter/openmeter/subscription"
subscriptionaddon "github.com/openmeterio/openmeter/openmeter/subscription/addon"
"github.com/openmeterio/openmeter/pkg/models"
)
type Service interface {
CreateFromPlan(ctx context.Context, inp CreateSubscriptionWorkflowInput, plan subscription.Plan) (subscription.SubscriptionView, error)
EditRunning(ctx context.Context, subscriptionID models.NamespacedID, customizations []subscription.Patch, timing subscription.Timing) (subscription.SubscriptionView, error)
ChangeToPlan(ctx context.Context, subscriptionID models.NamespacedID, inp ChangeSubscriptionWorkflowInput, plan subscription.Plan) (current subscription.Subscription, new subscription.SubscriptionView, err error)
Restore(ctx context.Context, subscriptionID models.NamespacedID) (subscription.Subscription, error)
AddAddon(ctx context.Context, subscriptionID models.NamespacedID, addonInp AddAddonWorkflowInput) (subscription.SubscriptionView, subscriptionaddon.SubscriptionAddon, error)
ChangeAddonQuantity(ctx context.Context, subscriptionID models.NamespacedID, changeInp ChangeAddonQuantityWorkflowInput) (subscription.SubscriptionView, subscriptionaddon.SubscriptionAddon, error)
}
type CreateSubscriptionWorkflowInput struct {
ChangeSubscriptionWorkflowInput
Namespace string
CustomerID string
BillingAnchor *time.Time `json:"billingAnchor,omitempty"`
Annotations models.Annotations
}
type ChangeSubscriptionWorkflowInput struct {
subscription.Timing
models.MetadataModel
Name string
Description *string
BillingAnchor *time.Time `json:"billingAnchor,omitempty"`
}
type AddAddonWorkflowInput struct {
models.MetadataModel
AddonID string `json:"addonID"`
InitialQuantity int `json:"initialQuantity"`
Timing subscription.Timing `json:"timing"`
}
func (i AddAddonWorkflowInput) Validate() error {
if i.AddonID == "" {
return errors.New("addonID is required")
}
if i.InitialQuantity <= 0 {
return errors.New("initialQuantity must be greater than 0")
}
return nil
}
type ChangeAddonQuantityWorkflowInput struct {
SubscriptionAddonID models.NamespacedID
Quantity int `json:"quantity"`
Timing subscription.Timing `json:"timing"`
}
func (i ChangeAddonQuantityWorkflowInput) Validate() error {
return nil
}