packages feed

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

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
{-# OPTIONS_GHC -Wno-unused-top-binds #-}
-- @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 Data.Text (Text)
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Keiki.Shape (CanonicalStateShape, CanonicalTypeName)
import NominalConformance.Bindings qualified
import NominalConformance.Domain qualified
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 :: !NominalConformance.Domain.OrderId
  , status :: !NominalConformance.Domain.OrderStatus
  , accountNumber :: !NominalConformance.Domain.AccountNumber
  , riskScore :: !NominalConformance.Domain.RiskScore
  , sequenceNumber :: !NominalConformance.Domain.SequenceNumber
  , featureFlag :: !NominalConformance.Domain.FeatureFlag
  , observedAt :: !NominalConformance.Domain.ObservedAt
  }
  deriving stock (Generic, Eq, Show)

data NominalLedgerCommand = RecordNominals !RecordNominalsData
  deriving stock (Generic, Eq, Show)

data NominalsRecordedData = NominalsRecordedData
  { orderId :: !NominalConformance.Domain.OrderId
  , status :: !NominalConformance.Domain.OrderStatus
  , accountNumber :: !NominalConformance.Domain.AccountNumber
  , riskScore :: !NominalConformance.Domain.RiskScore
  , sequenceNumber :: !NominalConformance.Domain.SequenceNumber
  , featureFlag :: !NominalConformance.Domain.FeatureFlag
  , observedAt :: !NominalConformance.Domain.ObservedAt
  }
  deriving stock (Generic, Eq, Show)

data NominalLedgerEvent = NominalsRecorded !NominalsRecordedData
  deriving stock (Generic, Eq, Show)

type NominalLedgerRegs =
  '[ '("orderId", NominalConformance.Domain.OrderId)
   , '("status", NominalConformance.Domain.OrderStatus)
   , '("accountNumber", NominalConformance.Domain.AccountNumber)
   , '("riskScore", NominalConformance.Domain.RiskScore)
   , '("sequenceNumber", NominalConformance.Domain.SequenceNumber)
   , '("featureFlag", NominalConformance.Domain.FeatureFlag)
   , '("observedAt", NominalConformance.Domain.ObservedAt)
   ]

initialNominalLedgerRegs :: RegFile NominalLedgerRegs
initialNominalLedgerRegs =
  RCons (Proxy @"orderId") NominalConformance.Bindings.initialOrderId $
  RCons (Proxy @"status") NominalConformance.Bindings.initialOrderStatus $
  RCons (Proxy @"accountNumber") NominalConformance.Bindings.initialAccountNumber $
  RCons (Proxy @"riskScore") NominalConformance.Bindings.initialRiskScore $
  RCons (Proxy @"sequenceNumber") NominalConformance.Bindings.initialSequenceNumber $
  RCons (Proxy @"featureFlag") NominalConformance.Bindings.initialFeatureFlag $
  RCons (Proxy @"observedAt") NominalConformance.Bindings.initialObservedAt RNil

$(deriveAggregateCtorsAll ''NominalLedgerCommand ''NominalLedgerRegs)



$(deriveWireCtorsAll ''NominalLedgerEvent)