packages feed

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

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

import Data.Proxy (Proxy (..))
import Data.Text (Text)
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)