packages feed

keiro-dsl-0.9.0.0: test/conformance-v2/Generated/HospitalCapacity/Nominals/Internal.hs

{-# LANGUAGE DeriveGeneric #-}
-- @generated by keiro-dsl 0.8.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
module Generated.HospitalCapacity.Nominals.Internal
  ( CommandId
  , parseCommandId
  , mkCommandId
  , commandIdText
  , unsafeCommandIdFromLegacyText
  , HospitalId
  , parseHospitalId
  , mkHospitalId
  , hospitalIdText
  , unsafeHospitalIdFromLegacyText
  , TransferReservationId
  , parseTransferReservationId
  , mkTransferReservationId
  , transferReservationIdText
  , unsafeTransferReservationIdFromLegacyText
  ) where

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

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

instance ToJSON CommandId where
  toJSON = toJSON . commandIdText

instance FromJSON CommandId where
  parseJSON = withText "CommandId" (either (fail . T.unpack) pure . parseCommandId)

parseCommandId :: Text -> Either Text CommandId
parseCommandId input = case validateIdDomainText (typeIdV7Domain "cmd") input of
  Left reason -> Left (T.pack (show reason))
  Right () -> Right (CommandId input)

mkCommandId :: Text -> Either Text CommandId
mkCommandId = parseCommandId

commandIdText :: CommandId -> Text
commandIdText (CommandId value) = value

unsafeCommandIdFromLegacyText :: Text -> CommandId
unsafeCommandIdFromLegacyText = CommandId

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

instance ToJSON HospitalId where
  toJSON = toJSON . hospitalIdText

instance FromJSON HospitalId where
  parseJSON = withText "HospitalId" (either (fail . T.unpack) pure . parseHospitalId)

parseHospitalId :: Text -> Either Text HospitalId
parseHospitalId input = case validateIdDomainText (typeIdV7Domain "hosp") input of
  Left reason -> Left (T.pack (show reason))
  Right () -> Right (HospitalId input)

mkHospitalId :: Text -> Either Text HospitalId
mkHospitalId = parseHospitalId

hospitalIdText :: HospitalId -> Text
hospitalIdText (HospitalId value) = value

unsafeHospitalIdFromLegacyText :: Text -> HospitalId
unsafeHospitalIdFromLegacyText = HospitalId

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

instance ToJSON TransferReservationId where
  toJSON = toJSON . transferReservationIdText

instance FromJSON TransferReservationId where
  parseJSON = withText "TransferReservationId" (either (fail . T.unpack) pure . parseTransferReservationId)

parseTransferReservationId :: Text -> Either Text TransferReservationId
parseTransferReservationId input = case validateIdDomainText (typeIdV7Domain "rsv") input of
  Left reason -> Left (T.pack (show reason))
  Right () -> Right (TransferReservationId input)

mkTransferReservationId :: Text -> Either Text TransferReservationId
mkTransferReservationId = parseTransferReservationId

transferReservationIdText :: TransferReservationId -> Text
transferReservationIdText (TransferReservationId value) = value

unsafeTransferReservationIdFromLegacyText :: Text -> TransferReservationId
unsafeTransferReservationIdFromLegacyText = TransferReservationId