packages feed

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)