packages feed

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)