packages feed

keiro-dsl-0.6.0.0: test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Domain.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TypeApplications #-}

-- @generated by keiro-dsl; do not edit. Regenerated from the .keiro spec.
module Generated.NominalScalars.NominalLedger.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 qualified NominalConformance.Bindings as Bindings
import NominalConformance.Domain

data NominalLedgerVertex = NominalLedgerEmpty | NominalLedgerRecorded
    deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
    deriving anyclass (FromJSON, ToJSON)

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