packages feed

keiro-dsl-0.15.0.0: test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Nominals/Internal.hs

-- @generated by keiro-dsl 0.15.0.0 (language keiro-dsl 4) from context workspace-proof generated nominal ID internals; do not edit.
module Proof.WorkspaceProof.Generated.Nominals.Internal
  ( ProofId
  , parseProofId
  , mkProofId
  , proofIdText
  , unsafeProofIdFromLegacyText
  ) where

import Data.Aeson (FromJSON (..), ToJSON (..), withText)
import Data.Text (Text)
import Data.Text qualified as T
import GHC.Generics (Generic)
import Keiki.Shape (CanonicalTypeName)
import Keiro.Codec.IdDomain (typeIdV7Domain, validateIdDomainText)

newtype ProofId = ProofId Text
  deriving stock (Generic, Eq, Ord, Show)

instance CanonicalTypeName ProofId

instance ToJSON ProofId where
  toJSON = toJSON . proofIdText

instance FromJSON ProofId where
  parseJSON = withText "ProofId" (either (fail . T.unpack) pure . parseProofId)

parseProofId :: Text -> Either Text ProofId
parseProofId input = case validateIdDomainText (typeIdV7Domain "proof") input of
  Left reason -> Left (T.pack (show reason))
  Right () -> Right (ProofId input)

mkProofId :: Text -> Either Text ProofId
mkProofId = parseProofId

proofIdText :: ProofId -> Text
proofIdText (ProofId value) = value

unsafeProofIdFromLegacyText :: Text -> ProofId
unsafeProofIdFromLegacyText = ProofId