keiro-dsl-0.17.0.0: test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Domain.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE TemplateHaskell #-}
-- @generated by keiro-dsl 0.17.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
module Generated.StructuralNominalLeaves.TemplateCatalog.Domain where
import Data.Aeson (FromJSON, ToJSON)
import Data.Proxy (Proxy (..))
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Keiki.Shape (CanonicalStateShape, CanonicalTypeName)
import Generated.StructuralNominalLeaves.Nominals (TemplateId, parseTemplateId)
import Conformance.StructuralNominals.Bindings qualified as Bindings
import Conformance.StructuralNominals.Domain (ClaimId, TemplateBook, TemplateRef, TemplateState)
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
data TemplateCatalogVertex = TemplateCatalogEmpty | TemplateCatalogRecorded | TemplateCatalogRouted
deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
deriving anyclass (ToJSON, FromJSON)
instance CanonicalStateShape TemplateCatalogVertex
instance CanonicalTypeName TemplateCatalogVertex
data RecordTemplateData = RecordTemplateData
{ state :: !TemplateState
, reference :: !TemplateRef
, book :: !TemplateBook
}
deriving stock (Generic, Eq, Show)
data RouteTemplateData = RouteTemplateData
{ templateId :: !TemplateId
, claimId :: !ClaimId
}
deriving stock (Generic, Eq, Show)
data TemplateCatalogCommand = RecordTemplate !RecordTemplateData
| RouteTemplate !RouteTemplateData
deriving stock (Generic, Eq, Show)
data TemplateRecordedData = TemplateRecordedData
{ state :: !TemplateState
, reference :: !TemplateRef
, book :: !TemplateBook
}
deriving stock (Generic, Eq, Show)
data TemplateRoutedData = TemplateRoutedData
{ templateId :: !TemplateId
, claimId :: !ClaimId
}
deriving stock (Generic, Eq, Show)
data TemplateCatalogEvent = TemplateRecorded !TemplateRecordedData
| TemplateRouted !TemplateRoutedData
deriving stock (Generic, Eq, Show)
type TemplateCatalogRegs =
'[ '("book", TemplateBook)
, '("activeTemplateId", TemplateId)
]
initialTemplateCatalogRegs :: RegFile TemplateCatalogRegs
initialTemplateCatalogRegs =
RCons (Proxy @"book") Bindings.initialTemplateBook $
RCons (Proxy @"activeTemplateId") (case parseTemplateId "template_01h455vb4pex5vsknk084sn02q" of Right parsed -> parsed; Left _ -> error "generated valid ID sample failed to parse") RNil
$(deriveAggregateCtorsAll ''TemplateCatalogCommand ''TemplateCatalogRegs)
$(deriveWireCtorsAll ''TemplateCatalogEvent)