keiro-dsl-0.17.0.0: test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/StructuralProjections.hs
{-# LANGUAGE TypeFamilies #-}
-- @generated by keiro-dsl 0.17.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions 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.AggregateScalarExpressions.StructuralProjections
( limitsCeilingWitness
, limitsCeilingGet
, limitsMinimumWitness
, limitsMinimumGet
) where
import Numeric.Natural (Natural)
import Keiro.Codec.Structural (bindingToShape)
import Keiki.Core (FieldProjection (..), FieldWitness, fieldWitness)
import Generated.AggregateScalarExpressions.Structural.Shape.Limits (LimitsShape(ceiling, minimum))
import ScalarExpressions.Bindings qualified as Bindings
import ScalarExpressions.Domain (Limits)
data LimitsCeilingProjection
limitsCeilingGet :: Limits -> Natural
limitsCeilingGet owner = (bindingToShape Bindings.limitsBinding owner).ceiling
instance FieldProjection LimitsCeilingProjection where
type FieldName LimitsCeilingProjection = "/ceiling"
type FieldOwner LimitsCeilingProjection = Limits
type FieldResult LimitsCeilingProjection = Natural
fieldShapeId _ = "scalar-expressions.Limits.v1"
projectFieldValue _ = limitsCeilingGet
limitsCeilingWitness :: FieldWitness LimitsCeilingProjection
limitsCeilingWitness = fieldWitness @LimitsCeilingProjection
data LimitsMinimumProjection
limitsMinimumGet :: Limits -> Integer
limitsMinimumGet owner = (bindingToShape Bindings.limitsBinding owner).minimum
instance FieldProjection LimitsMinimumProjection where
type FieldName LimitsMinimumProjection = "/minimum"
type FieldOwner LimitsMinimumProjection = Limits
type FieldResult LimitsMinimumProjection = Integer
fieldShapeId _ = "scalar-expressions.Limits.v1"
projectFieldValue _ = limitsMinimumGet
limitsMinimumWitness :: FieldWitness LimitsMinimumProjection
limitsMinimumWitness = fieldWitness @LimitsMinimumProjection