Product

@Description(value = "A product of the catalog")
class Product(state: ProductState)

A product of the catalog: a draft until it is published on the storefront, which takes a brand and a category; it can be delisted and published again. Its name, description, brand, category and price change at any time.

Every shopper of the tenant reads the products, and an employee changes them: a product belongs to its tenant (Ownership.TENANT), so neither its reads nor its writes are restricted by an owner. The catalog server's action-level authorization lets only an employee send its commands.

Constructors

Link copied to clipboard
constructor(state: ProductState)

Types

Link copied to clipboard
object Rejections

The codes the aggregate rejects a command with, by their local names: the compiler and the kernel name them <context>.product.<code>, as its peers read them from the api's generated contract.

Functions

Link copied to clipboard

Discontinues the product for good: its own event, with the reason, and the lifecycle event, in one commit, so the product is deleted as DeleteAggregate deletes it and the reason stays in its history.