keiro-dsl-0.10.0.0: test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Domain.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
-- @generated by keiro-dsl 0.9.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.
module Generated.NominalScalars.NominalLedger.Domain where
import Data.Aeson (FromJSON, ToJSON)
import Data.Proxy (Proxy (..))
import Data.Text (Text)
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Keiki.Shape (CanonicalStateShape, CanonicalTypeName)
import NominalConformance.Bindings qualified as Bindings
import NominalConformance.Domain (AccountNumber, FeatureFlag, ObservedAt, OrderId, OrderStatus, RiskScore, SequenceNumber)
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
data NominalLedgerVertex = NominalLedgerEmpty | NominalLedgerRecorded
deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
deriving anyclass (ToJSON, FromJSON)
instance CanonicalStateShape NominalLedgerVertex
instance CanonicalTypeName NominalLedgerVertex
data RecordNominalsData = RecordNominalsData
{ orderId :: !OrderId
, status :: !OrderStatus
, accountNumber :: !AccountNumber
, riskScore :: !RiskScore
, sequenceNumber :: !SequenceNumber
, featureFlag :: !FeatureFlag
, observedAt :: !ObservedAt
}
deriving stock (Generic, Eq, Show)
data NominalLedgerCommand = RecordNominals !RecordNominalsData
deriving stock (Generic, Eq, Show)
data NominalsRecordedData = NominalsRecordedData
{ orderId :: !OrderId
, status :: !OrderStatus
, accountNumber :: !AccountNumber
, riskScore :: !RiskScore
, sequenceNumber :: !SequenceNumber
, featureFlag :: !FeatureFlag
, observedAt :: !ObservedAt
}
deriving stock (Generic, Eq, Show)
data NominalLedgerEvent = NominalsRecorded !NominalsRecordedData
deriving stock (Generic, Eq, Show)
type NominalLedgerRegs =
'[ '("orderId", OrderId)
, '("status", OrderStatus)
, '("accountNumber", AccountNumber)
, '("riskScore", RiskScore)
, '("sequenceNumber", SequenceNumber)
, '("featureFlag", FeatureFlag)
, '("observedAt", ObservedAt)
]
initialNominalLedgerRegs :: RegFile NominalLedgerRegs
initialNominalLedgerRegs =
RCons (Proxy @"orderId") Bindings.initialOrderId $
RCons (Proxy @"status") Bindings.initialOrderStatus $
RCons (Proxy @"accountNumber") Bindings.initialAccountNumber $
RCons (Proxy @"riskScore") Bindings.initialRiskScore $
RCons (Proxy @"sequenceNumber") Bindings.initialSequenceNumber $
RCons (Proxy @"featureFlag") Bindings.initialFeatureFlag $
RCons (Proxy @"observedAt") Bindings.initialObservedAt RNil
$(deriveAggregateCtorsAll ''NominalLedgerCommand ''NominalLedgerRegs)
$(deriveWireCtorsAll ''NominalLedgerEvent)