Leon4gr45's picture
Upload folder using huggingface_hub (part 6)
d6f631f verified
|
Raw
History Blame Contribute Delete
1.84 kB
# Subscription Addon Diff Package
This package implements functionality to apply and restore subscription addons to subscription specifications.
## Core Components
### Diffable Interface (`diff.go`)
The central interface for objects that can be both applied to and removed from a subscription specification:
- `GetApplies()`: Returns operations that will be applied to the specification
- `GetRestores()`: Returns operations that will be applied to revert changes
### Addon Operations (`addon.go`)
Handles the conversion of subscription addons into diffable objects that can modify subscription specifications:
- `GetDiffableFromAddon()`: Creates a diffable object from a subscription addon
- `diffable`: Wrapper for apply and restore implementations for a single `SubscriptionAddonInstance`
### Application Logic (`apply.go`)
Algorithm for applying subscription addon rate cards to subscription specifications. A specification for it is as follows:
1. Given a `SubscriptionAddon`, `SubscriptionAddonInstances` can be created.
2. Given a `SubscriptionAddonInstance` and a `SubscriptionView`, the `SubscriptionAddonRateCards` can be matched to the `SubscriptionView`'s items.
Then, for each `SubscriptionAddonRateCard`:
- During the Addon's entire cadence, the RateCard has to be present: either as a modification on an existing item, or as a new item.
- The RateCard's contents should always be effective `SubscriptionAddonInstnce.Quantity` times: if quantity is 0, the RateCard should not be present.
> The merging logic of two RateCards is defined in the `subscriptionaddon` package, not here.
If the above are met for each `SubscriptionAddonRateCard` of each `SubscriptionAddonInstance`, then the `SubscriptionAddon` has been applied to the `SubscriptionSpec`.
## Usage
This package is meant to be internal to `subscription`.