packages feed

keiro-dsl-0.6.0.0: test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/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.AggregateScalars.ScalarLedger.Domain where

import Data.Aeson (FromJSON, ToJSON)
import Data.Proxy (Proxy (..))
import Data.Text (Text)
import Data.Time.Calendar (fromGregorian)
import Data.Time.Clock (UTCTime (..), picosecondsToDiffTime)
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
import Keiki.Shape (CanonicalStateShape, CanonicalTypeName)
import Numeric.Natural (Natural)

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)