subscriptionaddon

package
v1.0.0-beta.210 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 15, 2025 License: Apache-2.0 Imports: 8 Imported by: 0

README

Subscription Addon

This package contains the subscription addon related functionality.

Entity Relationship Diagram

erDiagram
    Subscription ||--|| SubscriptionAddon : "has (1:1)"
    SubscriptionAddon ||--o{ SubscriptionAddonQuantity : "has (1:N)"
    SubscriptionAddon ||--o{ SubscriptionAddonRateCard : "has (1:N)"
    SubscriptionAddonRateCard ||--o{ SubscriptionAddonRateCardItemLink : "links (1:N)"
    SubscriptionItem ||--o{ SubscriptionAddonRateCardItemLink : "links (1:N)"
    Addon ||--|| SubscriptionAddon : "has (1:1)"

    Subscription {
        string id PK
    }

    Addon {
        string id PK
    }

    SubscriptionAddon {
        string id PK
        string subscription_id FK
        string addon_id FK
    }

    SubscriptionAddonQuantity {
        string id PK
        string subscription_addon_id FK
    }

    SubscriptionAddonRateCard {
        string id PK
        string subscription_addon_id FK
    }

    SubscriptionAddonRateCardItemLink {
        string id PK
        string subscription_addon_rate_card_id FK
        string subscription_item_id FK
    }

    SubscriptionItem {
        string id PK
    }

Documentation

Index

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"`

	RateCards       []CreateSubscriptionAddonRateCardInput `json:"rateCards"`
	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

type CreateSubscriptionAddonQuantityRepositoryInput

type CreateSubscriptionAddonQuantityRepositoryInput struct {
	ActiveFrom time.Time `json:"activeFrom"`
	Quantity   int       `json:"quantity"`
}

SubscriptionAddonQuantity

type CreateSubscriptionAddonRateCardInput

type CreateSubscriptionAddonRateCardInput struct {
	AddonRateCardID string `json:"addonRateCardID"`

	AffectedSubscriptionItemIDs []string `json:"affectedSubscriptionItemIDs"`
}

type CreateSubscriptionAddonRateCardRepositoryInput

type CreateSubscriptionAddonRateCardRepositoryInput struct {
	AddonRateCardID string `json:"addonRateCardID"`

	AffectedSubscriptionItemIDs []string `json:"affectedSubscriptionItemIDs"`
}

SubscriptionAddonRateCard

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 SubscriptionAddon

type SubscriptionAddon struct {
	models.NamespacedID
	models.ManagedModel
	models.MetadataModel

	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"`
	Quantities timeutil.Timeline[SubscriptionAddonQuantity] `json:"quantities"`
}

type SubscriptionAddonQuantity

type SubscriptionAddonQuantity struct {
	models.NamespacedID
	models.ManagedModel

	ActiveFrom time.Time `json:"activeFrom"`
	Quantity   int       `json:"quantity"`
}

func (SubscriptionAddonQuantity) AsTimed

type SubscriptionAddonQuantityRepository

type SubscriptionAddonQuantityRepository interface {
	Create(ctx context.Context, subscriptionAddonID models.NamespacedID, input CreateSubscriptionAddonQuantityRepositoryInput) (*SubscriptionAddonQuantity, error)
}

type SubscriptionAddonRateCard

type SubscriptionAddonRateCard struct {
	models.NamespacedID
	models.ManagedModel

	AddonRateCard addon.RateCard `json:"addonRateCard"`

	AffectedSubscriptionItemIDs []string `json:"affectedSubscriptionItemIDs"`
}

type SubscriptionAddonRateCardRepository

type SubscriptionAddonRateCardRepository interface {
	CreateMany(ctx context.Context, subscriptionAddonID models.NamespacedID, inputs []CreateSubscriptionAddonRateCardRepositoryInput) ([]SubscriptionAddonRateCard, error)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL