packages feed

keiro-dsl-0.9.0.0: test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Domain.hs

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

-- @generated by keiro-dsl 0.8.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.
module Generated.IdDomainMigration.OrderBook.Domain where

import Data.Aeson (FromJSON, ToJSON)
import Data.Proxy (Proxy (..))
import Data.Text (Text)
import GHC.Generics (Generic)
import Generated.IdDomainMigration.Nominals (OrderId, parseOrderId)
import Keiki.Core (RegFile (..))
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
import Keiki.Shape (CanonicalStateShape, CanonicalTypeName)

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)