keiro-dsl-0.7.0.0: test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Nominals.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE LambdaCase #-}
-- @generated by keiro-dsl; do not edit. Regenerated from the .keiro spec.
module Generated.WorkspaceNominalProof.Nominals where
import Data.Aeson (FromJSON, ToJSON)
import Data.Text (Text)
import GHC.Generics (Generic)
import Keiki.Shape (CanonicalTypeName)
import Keiki.Core (ExactFieldProjection (..), FieldProjection (..), FieldWitness, exactFieldWitness, fieldWitness)
import Data.List.NonEmpty (NonEmpty (..))
import Keiki.ProjectionDomain (finiteProjectionDomain)
newtype ProjectId = ProjectId Text
deriving stock (Generic, Eq, Ord, Show)
deriving anyclass (ToJSON, FromJSON)
instance CanonicalTypeName ProjectId
projectIdText :: ProjectId -> Text
projectIdText (ProjectId value) = value
data ProjectIdEqualityProjection
instance FieldProjection ProjectIdEqualityProjection where
type FieldName ProjectIdEqualityProjection = "ProjectId"
type FieldOwner ProjectIdEqualityProjection = ProjectId
type FieldResult ProjectIdEqualityProjection = Text
fieldShapeId _ = "nominal-equality|name=ProjectId|contract=keiro-dsl/nominal-equality/1|key=Text|domain=legacy-unrestricted-text|owner=generated"
projectFieldValue _ = projectIdText
projectIdEqualityWitness :: FieldWitness ProjectIdEqualityProjection
projectIdEqualityWitness = fieldWitness @ProjectIdEqualityProjection
data ProjectPhase = Draft | Active
deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
deriving anyclass (ToJSON, FromJSON)
instance CanonicalTypeName ProjectPhase
projectPhaseText :: ProjectPhase -> Text
projectPhaseText = \case
Draft -> "draft"
Active -> "active"
data ProjectPhaseEqualityProjection
instance FieldProjection ProjectPhaseEqualityProjection where
type FieldName ProjectPhaseEqualityProjection = "ProjectPhase"
type FieldOwner ProjectPhaseEqualityProjection = ProjectPhase
type FieldResult ProjectPhaseEqualityProjection = Text
fieldShapeId _ = "nominal-equality|name=ProjectPhase|contract=keiro-dsl/nominal-equality/1|key=Text|domain=finite-text:draft,active|owner=generated"
projectFieldValue _ = projectPhaseText
instance ExactFieldProjection ProjectPhaseEqualityProjection where
fieldProjectionDomain _ = finiteProjectionDomain ("draft" :| ["active"])
reconstructFieldOwner _ = \case
"draft" -> Just Draft
"active" -> Just Active
_ -> Nothing
projectPhaseEqualityWitness :: FieldWitness ProjectPhaseEqualityProjection
projectPhaseEqualityWitness = exactFieldWitness @ProjectPhaseEqualityProjection
data UnusedNominal = Present | Absent
deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
deriving anyclass (ToJSON, FromJSON)
instance CanonicalTypeName UnusedNominal
unusedNominalText :: UnusedNominal -> Text
unusedNominalText = \case
Present -> "present"
Absent -> "absent"