packages feed

keiro-dsl-0.12.0.0: test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Domain.hs

{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
-- @generated by keiro-dsl 0.12.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
module Generated.CatalogDemo.Orders.Domain where

import Data.Proxy (Proxy (..))
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Numeric.Natural (Natural)
import CatalogDemo.MappedBindings qualified as MappedBindings
import CatalogDemo.MappedDomain (OrderPayload, RegisterState, SharedReference)
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)

data OrdersVertex = OrdersEmpty | OrdersRecorded
  deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)

data RecordOrderData = RecordOrderData
  { amount :: !Natural
  , orderPayload :: !OrderPayload
  , sharedReference :: !SharedReference
  }
  deriving stock (Generic, Eq, Show)

data OrdersCommand = RecordOrder !RecordOrderData
  deriving stock (Generic, Eq, Show)

data OrderRecordedData = OrderRecordedData
  { amount :: !Natural
  , orderPayload :: !OrderPayload
  , sharedReference :: !SharedReference
  }
  deriving stock (Generic, Eq, Show)

data OrdersEvent = OrderRecorded !OrderRecordedData
  deriving stock (Generic, Eq, Show)

type OrdersRegs =
  '[ '("total", Natural)
   , '("qualificationState", RegisterState)
   ]

initialOrdersRegs :: RegFile OrdersRegs
initialOrdersRegs =
  RCons (Proxy @"total") 0 $
  RCons (Proxy @"qualificationState") MappedBindings.initialRegisterState RNil

$(deriveAggregateCtorsAll ''OrdersCommand ''OrdersRegs)



$(deriveWireCtorsAll ''OrdersEvent)