packages feed

keiro-dsl-0.7.0.0: test/conformance-behavior-complete/BehaviorComplete/Bindings.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE LambdaCase #-}

-- This is a HAND-OWNED consumer binding skeleton. keiro-dsl creates it once
-- and never overwrites it. Fill each HOLE and run the generated harness.
module BehaviorComplete.Bindings
  ( startPayloadCases,
    startPayloadBinding,
  )
where

import BehaviorComplete.Domain qualified
import Data.List.NonEmpty (NonEmpty (..))
import Generated.BehaviorComplete.Structural.Shape.StartPayload qualified
import Keiro.Codec.Structural (FixtureCases (..), StructuralBinding (..))

startPayloadCases :: FixtureCases BehaviorComplete.Domain.StartPayload
startPayloadCases =
  FixtureCases
    ( ("without-note", BehaviorComplete.Domain.StartPayload "first" Nothing)
        :| [("with-note", BehaviorComplete.Domain.StartPayload "second" (Just "present"))]
    )

startPayloadBinding :: StructuralBinding BehaviorComplete.Domain.StartPayload Generated.BehaviorComplete.Structural.Shape.StartPayload.StartPayloadShape
startPayloadBinding =
  StructuralBinding
    { bindingToShape = \case
        BehaviorComplete.Domain.StartPayload labelValue noteValue -> Generated.BehaviorComplete.Structural.Shape.StartPayload.StartPayload labelValue noteValue,
      bindingFromShape = \case
        Generated.BehaviorComplete.Structural.Shape.StartPayload.StartPayload labelValue noteValue -> BehaviorComplete.Domain.StartPayload labelValue noteValue
    }