packages feed

keiro-dsl-0.11.0.0: test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Domain.hs

{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
-- @generated by keiro-dsl 0.11.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
module Generated.StructuralConformance.ArtifactCatalog.Domain where

import Data.Proxy (Proxy (..))
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Conformance.Structural.Bindings qualified as Bindings
import Conformance.Structural.Domain (ArtifactInfo, Geometry)
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)

data ArtifactCatalogVertex = ArtifactCatalogEmpty | ArtifactCatalogObserved
  deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)

data ObserveArtifactData = ObserveArtifactData
  { artifact :: !ArtifactInfo
  , geometry :: !Geometry
  , accepted :: !Bool
  }
  deriving stock (Generic, Eq, Show)

data ArtifactCatalogCommand = ObserveArtifact !ObserveArtifactData
  deriving stock (Generic, Eq, Show)

data ArtifactRecordedData = ArtifactRecordedData
  { artifact :: !ArtifactInfo
  , geometry :: !Geometry
  , accepted :: !Bool
  }
  deriving stock (Generic, Eq, Show)

data ArtifactAcceptedData = ArtifactAcceptedData
  { accepted :: !Bool
  }
  deriving stock (Generic, Eq, Show)

data ArtifactCatalogEvent = ArtifactRecorded !ArtifactRecordedData
  | ArtifactAccepted !ArtifactAcceptedData
  deriving stock (Generic, Eq, Show)

type ArtifactCatalogRegs =
  '[ '("currentArtifact", ArtifactInfo)
   , '("currentGeometry", Geometry)
   , '("acceptedCount", Int)
   ]

initialArtifactCatalogRegs :: RegFile ArtifactCatalogRegs
initialArtifactCatalogRegs =
  RCons (Proxy @"currentArtifact") Bindings.emptyArtifactInfo $
  RCons (Proxy @"currentGeometry") Bindings.emptyGeometry $
  RCons (Proxy @"acceptedCount") 0 RNil

$(deriveAggregateCtorsAll ''ArtifactCatalogCommand ''ArtifactCatalogRegs)



$(deriveWireCtorsAll ''ArtifactCatalogEvent)