packages feed

keiro-dsl-0.22.0.0: test/conformance-mapped-structural-enum-equality/Conformance/MappedStructuralEnumEquality/Bindings.hs

module Conformance.MappedStructuralEnumEquality.Bindings where

import Conformance.MappedStructuralEnumEquality.Domain qualified as Domain
import Data.List.NonEmpty (NonEmpty (..))
import Generated.MappedStructuralEnumEquality.Structural.Shape.RequiredScope qualified as Scope
import Generated.MappedStructuralEnumEquality.Structural.Shape.Request qualified as Request
import Keiro.Codec.Structural (FixtureCases (..), StructuralBinding (..))

requiredScopeBinding :: StructuralBinding Domain.RequiredScope Scope.RequiredScopeShape
requiredScopeBinding = StructuralBinding toShape fromShape
  where
    toShape Domain.PipelineScope = Scope.PipelineScope
    toShape Domain.DiagnosticScope = Scope.DiagnosticScope
    fromShape Scope.PipelineScope = Domain.PipelineScope
    fromShape Scope.DiagnosticScope = Domain.DiagnosticScope

requiredScopeFixtures :: FixtureCases Domain.RequiredScope
requiredScopeFixtures = FixtureCases (("pipeline", Domain.PipelineScope) :| [("diagnostic", Domain.DiagnosticScope)])

initialScope :: Domain.RequiredScope
initialScope = Domain.PipelineScope

requestBinding :: StructuralBinding Domain.Request Request.RequestShape
requestBinding = StructuralBinding
  (\(Domain.Request scope) -> Request.Request (bindingToShape requiredScopeBinding scope))
  (\(Request.Request scope) -> Domain.Request (bindingFromShape requiredScopeBinding scope))

requestFixtures :: FixtureCases Domain.Request
requestFixtures = FixtureCases (("pipeline", Domain.Request Domain.PipelineScope) :| [("diagnostic", Domain.Request Domain.DiagnosticScope)])