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