packages feed

keiro-dsl-0.7.0.0: test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/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.IdDomainMigration.OrderBook.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 Generated.IdDomainMigration.Nominals (OrderId, parseOrderId)
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)

data OrderBookVertex = OrderBookEmpty | OrderBookRecorded
  deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
  deriving anyclass (ToJSON, FromJSON)
instance CanonicalStateShape OrderBookVertex
instance CanonicalTypeName OrderBookVertex

data RecordData = RecordData
  { orderId :: !OrderId
  }
  deriving stock (Generic, Eq, Show)

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

data OrderRecordedData = OrderRecordedData
  { orderId :: !OrderId
  }
  deriving stock (Generic, Eq, Show)

data OrderBookEvent = OrderRecorded !OrderRecordedData
  deriving stock (Generic, Eq, Show)

type OrderBookRegs =
  '[ '("orderId", OrderId)
   ]

initialOrderBookRegs :: RegFile OrderBookRegs
initialOrderBookRegs =
  RCons (Proxy @"orderId") (case parseOrderId "ord_01h455vb4pex5vsknk084sn02q" of Right parsed -> parsed; Left _ -> error "generated valid ID sample failed to parse") RNil

$(deriveAggregateCtorsAll ''OrderBookCommand ''OrderBookRegs)



$(deriveWireCtorsAll ''OrderBookEvent)