packages feed

keiro-dsl-0.9.0.0: test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Domain.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
-- @generated by keiro-dsl 0.8.0.0 (language keiro-dsl 4) from aggregate ProjectArtifact; do not edit.
module Generated.WorkspaceNominalProof.ProjectArtifact.Domain where

import Data.Proxy (Proxy (..))
import Data.Text (Text)
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Generated.WorkspaceNominalProof.Nominals (ProjectId, parseProjectId, ProjectPhase (..))
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)

data ProjectArtifactVertex = ProjectArtifactEmpty | ProjectArtifactRecorded
  deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)

data RecordArtifactData = RecordArtifactData
  { projectId :: !ProjectId
  , phase :: !ProjectPhase
  }
  deriving stock (Generic, Eq, Show)

data ProjectArtifactCommand = RecordArtifact !RecordArtifactData
  deriving stock (Generic, Eq, Show)

data ArtifactRecordedData = ArtifactRecordedData
  { projectId :: !ProjectId
  , phase :: !ProjectPhase
  }
  deriving stock (Generic, Eq, Show)

data ProjectArtifactEvent = ArtifactRecorded !ArtifactRecordedData
  deriving stock (Generic, Eq, Show)

type ProjectArtifactRegs =
  '[ '("projectId", ProjectId)
   , '("phase", ProjectPhase)
   ]

initialProjectArtifactRegs :: RegFile ProjectArtifactRegs
initialProjectArtifactRegs =
  RCons (Proxy @"projectId") (case parseProjectId "proj_01h455vb4pex5vsknk084sn02q" of Right parsed -> parsed; Left _ -> error "generated valid ID sample failed to parse") $
  RCons (Proxy @"phase") Draft RNil

$(deriveAggregateCtorsAll ''ProjectArtifactCommand ''ProjectArtifactRegs)



$(deriveWireCtorsAll ''ProjectArtifactEvent)