keiro-dsl-0.22.0.0: test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/StructuralProjections.hs
{-# LANGUAGE TypeFamilies #-}
-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-structural-enum-equality mapped structural facade; do not edit.
-- Equality witnesses are emitted for Text, Int, Bool, Natural, and UTCTime.
-- Nominal ID and enum leaves carry exact canonical-text domains.
-- Int, Natural, and UTCTime belong to Keiki's ordered subset.
module Generated.MappedStructuralEnumEquality.StructuralProjections
( requiredScopeWitness
, requiredScopeGet
) where
import Data.Text (Text)
import Data.List.NonEmpty (NonEmpty (..))
import Keiro.Codec.Structural (bindingToShape, bindingFromShape)
import Keiki.Core (FieldProjection (..), FieldWitness, ExactFieldProjection (..), exactFieldWitness)
import Keiki.ProjectionDomain (finiteProjectionDomain)
import Conformance.MappedStructuralEnumEquality.Bindings qualified as Bindings
import Conformance.MappedStructuralEnumEquality.Domain (RequiredScope)
import Generated.MappedStructuralEnumEquality.Structural.Shape.RequiredScope qualified as ShapeRequiredScope
data RequiredScopeProjection
requiredScopeGet :: RequiredScope -> Text
requiredScopeGet owner = case bindingToShape Bindings.requiredScopeBinding owner of ShapeRequiredScope.PipelineScope -> "pipeline"; ShapeRequiredScope.DiagnosticScope -> "diagnostic"
instance FieldProjection RequiredScopeProjection where
type FieldName RequiredScopeProjection = ""
type FieldOwner RequiredScopeProjection = RequiredScope
type FieldResult RequiredScopeProjection = Text
fieldShapeId _ = "conformance.RequiredScope.v1"
projectFieldValue _ = requiredScopeGet
instance ExactFieldProjection RequiredScopeProjection where
fieldProjectionDomain _ = finiteProjectionDomain ("pipeline" :| ["diagnostic"])
reconstructFieldOwner _ value = case value of
"pipeline" -> Just (bindingFromShape Bindings.requiredScopeBinding ShapeRequiredScope.PipelineScope)
"diagnostic" -> Just (bindingFromShape Bindings.requiredScopeBinding ShapeRequiredScope.DiagnosticScope)
_ -> Nothing
requiredScopeWitness :: FieldWitness RequiredScopeProjection
requiredScopeWitness = exactFieldWitness @RequiredScopeProjection