Skip to content

Use cases

Processor/retriever pattern: IProductsProcessor / IProductsRetriever (DefaultProductsProcessor / DefaultProductsRetriever), with FluentValidation *Validator types.

Product commands (write)

Input Operation
CreateProductInput Create product in Draft
UpdateProductInput Partial update + status transitions
RetireProductInput Retire product
AddEditionInput Add edition to product
UpdateEditionInput Update edition
ActivateFeatureInput Activate/create edition-feature binding
DeactivateFeatureInput Remove edition-feature binding

Product queries (read)

Input Operation
GetProductByIdInput Get product
ListProductsInput List products
GetEditionByIdInput Get edition

Peer catalog reads (seed/read-only)

Retriever Inputs
IFeatureCatalogRetriever ListCatalogFeaturesInput, GetCatalogFeatureByIdInput
IBusinessModelCatalogRetriever ListCatalogBusinessModelsInput
IPricingModelCatalogRetriever ListCatalogPricingModelsInput

Invariants

Status transitions are validated (e.g. ProductActivationRequiresPublishedEditionException, InvalidProductStatusTransitionException, InvalidEditionStatusTransitionException); slugs are unique per tenant and immutable (DuplicateProductSlugException, ProductSlugImmutableException); edition codes unique per product (EditionCodeConflictException).

See also