packages feed

keiro-dsl-0.10.0.0: test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Domain.hs

{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
-- @generated by keiro-dsl 0.9.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.
module Generated.AggregateScalars.ScalarLedger.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 Data.Time.Calendar (fromGregorian)
import Data.Time.Clock (UTCTime(..), picosecondsToDiffTime)
import Numeric.Natural (Natural)
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)

data ScalarLedgerVertex = ScalarLedgerEmpty | ScalarLedgerRecorded
  deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
  deriving anyclass (ToJSON, FromJSON)
instance CanonicalStateShape ScalarLedgerVertex
instance CanonicalTypeName ScalarLedgerVertex

data RecordData = RecordData
  { observedAt :: !UTCTime
  , revision :: !Natural
  }
  deriving stock (Generic, Eq, Show)

data ScalarLedgerCommand = Record !RecordData
  deriving stock (Generic, Eq, Show)

data ScalarsRecordedData = ScalarsRecordedData
  { observedAt :: !UTCTime
  , revision :: !Natural
  }
  deriving stock (Generic, Eq, Show)

data ScalarLedgerEvent = ScalarsRecorded !ScalarsRecordedData
  deriving stock (Generic, Eq, Show)

type ScalarLedgerRegs =
  '[ '("observedAt", UTCTime)
   , '("revision", Natural)
   ]

initialScalarLedgerRegs :: RegFile ScalarLedgerRegs
initialScalarLedgerRegs =
  RCons (Proxy @"observedAt") (UTCTime (fromGregorian 2026 1 2) (picosecondsToDiffTime 11045123456789012)) $
  RCons (Proxy @"revision") 0 RNil

$(deriveAggregateCtorsAll ''ScalarLedgerCommand ''ScalarLedgerRegs)



$(deriveWireCtorsAll ''ScalarLedgerEvent)