Documentation
¶
Index ¶
- Variables
- type BillingEvent
- type BillingHook
- type MemoryService
- func (service *MemoryService) Downgrade(ctx context.Context, tenantID types.TenantID, planID string) (Subscription, error)
- func (service *MemoryService) Get(ctx context.Context, tenantID types.TenantID) (Subscription, error)
- func (service *MemoryService) Subscribe(ctx context.Context, tenantID types.TenantID, planID string) (Subscription, error)
- func (service *MemoryService) Unsubscribe(ctx context.Context, tenantID types.TenantID) (Subscription, error)
- func (service *MemoryService) Upgrade(ctx context.Context, tenantID types.TenantID, planID string) (Subscription, error)
- type Option
- type Service
- type Status
- type Subscription
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrSubscriptionNotFound reports that a subscription does not exist. ErrSubscriptionNotFound = errors.New("gotenancy/subscription: subscription not found") // ErrSubscriptionAlreadyExists reports that a tenant already has a subscription. ErrSubscriptionAlreadyExists = errors.New("gotenancy/subscription: subscription already exists") // ErrInvalidSubscription reports invalid subscription metadata. ErrInvalidSubscription = errors.New("gotenancy/subscription: invalid subscription") // ErrInvalidTransition reports an invalid subscription lifecycle transition. ErrInvalidTransition = errors.New("gotenancy/subscription: invalid transition") )
Functions ¶
This section is empty.
Types ¶
type BillingEvent ¶
type BillingEvent struct {
TenantID types.TenantID
Action string
FromPlan string
ToPlan string
Status Status
}
BillingEvent describes a subscription change for external billing systems.
type BillingHook ¶
type BillingHook func(context.Context, BillingEvent) error
BillingHook receives subscription lifecycle changes.
type MemoryService ¶
type MemoryService struct {
// contains filtered or unexported fields
}
MemoryService is a thread-safe in-memory subscription service.
func NewMemoryService ¶
func NewMemoryService(opts ...Option) *MemoryService
NewMemoryService creates an empty subscription service.
func (*MemoryService) Downgrade ¶
func (service *MemoryService) Downgrade(ctx context.Context, tenantID types.TenantID, planID string) (Subscription, error)
Downgrade changes an active subscription to a lower plan.
func (*MemoryService) Get ¶
func (service *MemoryService) Get(ctx context.Context, tenantID types.TenantID) (Subscription, error)
Get returns a subscription by tenant ID.
func (*MemoryService) Subscribe ¶
func (service *MemoryService) Subscribe(ctx context.Context, tenantID types.TenantID, planID string) (Subscription, error)
Subscribe creates an active subscription for a tenant.
func (*MemoryService) Unsubscribe ¶
func (service *MemoryService) Unsubscribe(ctx context.Context, tenantID types.TenantID) (Subscription, error)
Unsubscribe cancels an active subscription.
func (*MemoryService) Upgrade ¶
func (service *MemoryService) Upgrade(ctx context.Context, tenantID types.TenantID, planID string) (Subscription, error)
Upgrade changes an active subscription to a higher plan.
type Option ¶
type Option func(*MemoryService)
Option configures MemoryService.
func WithBillingHook ¶
func WithBillingHook(hook BillingHook) Option
WithBillingHook sets the billing hook.
type Service ¶
type Service interface {
Subscribe(ctx context.Context, tenantID types.TenantID, planID string) (Subscription, error)
Unsubscribe(ctx context.Context, tenantID types.TenantID) (Subscription, error)
Upgrade(ctx context.Context, tenantID types.TenantID, planID string) (Subscription, error)
Downgrade(ctx context.Context, tenantID types.TenantID, planID string) (Subscription, error)
Get(ctx context.Context, tenantID types.TenantID) (Subscription, error)
}
Service manages tenant subscriptions.
Click to show internal directories.
Click to hide internal directories.