packages feed

keiro-dsl-0.18.0.0: test/conformance-bare-containers/Generated/BareContainers/BareStore/Domain.hs

{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE TemplateHaskell #-}
-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit.
module Generated.BareContainers.BareStore.Domain where

import Data.Aeson (FromJSON, ToJSON)
import Data.Proxy (Proxy (..))
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Keiki.Shape (CanonicalStateShape, CanonicalTypeName)
import Conformance.BareContainers.Bindings qualified as Bindings
import Conformance.BareContainers.Domain (BareEnvelope, MaybeText, TextList, TextMap)
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)

data BareStoreVertex = BareStoreEmpty | BareStoreStored
  deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
  deriving anyclass (ToJSON, FromJSON)
instance CanonicalStateShape BareStoreVertex
instance CanonicalTypeName BareStoreVertex

data StoreData = StoreData
  { optionalLabel :: !MaybeText
  , labels :: !TextList
  , attributes :: !TextMap
  , envelope :: !BareEnvelope
  }
  deriving stock (Generic, Eq, Show)

data BareStoreCommand = Store !StoreData
  deriving stock (Generic, Eq, Show)

data StoredValueData = StoredValueData
  { optionalLabel :: !MaybeText
  , labels :: !TextList
  , attributes :: !TextMap
  , envelope :: !BareEnvelope
  }
  deriving stock (Generic, Eq, Show)

data BareStoreEvent = StoredValue !StoredValueData
  deriving stock (Generic, Eq, Show)

type BareStoreRegs =
  '[ '("current", MaybeText)
   ]

initialBareStoreRegs :: RegFile BareStoreRegs
initialBareStoreRegs =
  RCons (Proxy @"current") Bindings.initialMaybeText RNil

$(deriveAggregateCtorsAll ''BareStoreCommand ''BareStoreRegs)



$(deriveWireCtorsAll ''BareStoreEvent)