keiro-dsl-0.7.0.0: test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Domain.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
{-# OPTIONS_GHC -Wno-unused-top-binds #-}
-- @generated by keiro-dsl; do not edit. Regenerated from the .keiro spec.
module Generated.WorkspaceNominalProof.Project.Domain where
import Data.Proxy (Proxy (..))
import Data.Text (Text)
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Generated.WorkspaceNominalProof.Nominals (ProjectId (..), 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") (ProjectId "") $
RCons (Proxy @"phase") Draft RNil
$(deriveAggregateCtorsAll ''ProjectCommand ''ProjectRegs)
$(deriveWireCtorsAll ''ProjectEvent)