keiro-dsl-0.17.0.0: test/conformance-contract-declared-id/Generated/ContractDeclaredId/Structural/NominalLeaves.hs
-- @generated by keiro-dsl 0.17.0.0 (language keiro-dsl 6) from context contract-declared-id structural nominal leaves; do not edit.
module Generated.ContractDeclaredId.Structural.NominalLeaves where
import Data.Aeson (Value (..), withText)
import Data.Aeson.Types (Parser)
import Data.KindID qualified as KindID
import Data.Text qualified as T
import Keiro.Codec.IdDomain (parseKindIdV7Text)
import Keiro.Codec.Nominal (nominalFromRepresentation, nominalToRepresentation)
import Conformance.ContractDeclaredId.Bindings qualified as Bindings
import Conformance.ContractDeclaredId.Domain (ClaimId)
import Generated.ContractDeclaredId.Nominals qualified as Nominals
encodeClaimIdLeaf :: ClaimId -> Value
encodeClaimIdLeaf = String . KindID.toText . nominalToRepresentation Bindings.claimIdBinding
{-# NOINLINE encodeClaimIdLeaf #-}
parseClaimIdLeaf :: Value -> Parser ClaimId
parseClaimIdLeaf = withText "ClaimId" $ \input ->
case parseKindIdV7Text @"claim" input of
Left reason -> fail (show reason)
Right representation -> pure (nominalFromRepresentation Bindings.claimIdBinding representation)
{-# NOINLINE parseClaimIdLeaf #-}
encodeTemplateIdLeaf :: Nominals.TemplateId -> Value
encodeTemplateIdLeaf = String . Nominals.templateIdText
{-# NOINLINE encodeTemplateIdLeaf #-}
parseTemplateIdLeaf :: Value -> Parser Nominals.TemplateId
parseTemplateIdLeaf = withText "TemplateId" (either (fail . T.unpack) pure . Nominals.parseTemplateId)
{-# NOINLINE parseTemplateIdLeaf #-}