keiro-dsl-0.11.0.0: test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Domain.hs
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
-- @generated by keiro-dsl 0.11.0.0 (language keiro-dsl 4) from aggregate Project; do not edit.
module Generated.WorkspaceNominalProof.Project.Domain where
import Data.Proxy (Proxy (..))
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Generated.WorkspaceNominalProof.Nominals (ProjectId, parseProjectId, ProjectPhase (..))
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
data ProjectVertex = ProjectEmpty | ProjectLive | ProjectArchived
deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
data RegisterProjectData = RegisterProjectData
{ projectId :: !ProjectId
, phase :: !ProjectPhase
}
deriving stock (Generic, Eq, Show)
data ArchiveProjectData = ArchiveProjectData
{ projectId :: !ProjectId
, phase :: !ProjectPhase
}
deriving stock (Generic, Eq, Show)
data ProjectCommand = RegisterProject !RegisterProjectData
| ArchiveProject !ArchiveProjectData
deriving stock (Generic, Eq, Show)
data ProjectRegisteredData = ProjectRegisteredData
{ projectId :: !ProjectId
, phase :: !ProjectPhase
}
deriving stock (Generic, Eq, Show)
data ArchivalRecordedData = ArchivalRecordedData
{ projectId :: !ProjectId
, phase :: !ProjectPhase
}
deriving stock (Generic, Eq, Show)
data ProjectEvent = ProjectRegistered !ProjectRegisteredData
| ArchivalRecorded !ArchivalRecordedData
deriving stock (Generic, Eq, Show)
type ProjectRegs =
'[ '("projectId", ProjectId)
, '("phase", ProjectPhase)
]
initialProjectRegs :: RegFile ProjectRegs
initialProjectRegs =
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 ''ProjectCommand ''ProjectRegs)
$(deriveWireCtorsAll ''ProjectEvent)