packages feed

keiro-dsl-0.17.0.0: test/conformance-process-reactions/Generated/ProcessReactions/Nominals/Internal.hs

-- @generated by keiro-dsl 0.17.0.0 (language keiro-dsl 6) from context process-reactions generated nominal ID internals; do not edit.
module Generated.ProcessReactions.Nominals.Internal
  ( IncidentId
  , parseIncidentId
  , mkIncidentId
  , incidentIdText
  , unsafeIncidentIdFromLegacyText
  ) 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 IncidentId = IncidentId Text
  deriving stock (Generic, Eq, Ord, Show)

instance CanonicalTypeName IncidentId

instance ToJSON IncidentId where
  toJSON = toJSON . incidentIdText

instance FromJSON IncidentId where
  parseJSON = withText "IncidentId" (either (fail . T.unpack) pure . parseIncidentId)

parseIncidentId :: Text -> Either Text IncidentId
parseIncidentId input = case validateIdDomainText (typeIdV7Domain "inc") input of
  Left reason -> Left (T.pack (show reason))
  Right () -> Right (IncidentId input)

mkIncidentId :: Text -> Either Text IncidentId
mkIncidentId = parseIncidentId

incidentIdText :: IncidentId -> Text
incidentIdText (IncidentId value) = value

unsafeIncidentIdFromLegacyText :: Text -> IncidentId
unsafeIncidentIdFromLegacyText = IncidentId