keiro-dsl-0.7.0.0: test/conformance-id-domain-migration/Generated/IdDomainMigration/Nominals/Internal.hs
{-# LANGUAGE DeriveGeneric #-}
-- @generated by keiro-dsl; do not edit. Regenerated from the .keiro spec.
module Generated.IdDomainMigration.Nominals.Internal
( OrderId
, parseOrderId
, mkOrderId
, orderIdText
, unsafeOrderIdFromLegacyText
) 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 OrderId = OrderId Text
deriving stock (Generic, Eq, Ord, Show)
instance ToJSON OrderId where
toJSON = toJSON . orderIdText
instance FromJSON OrderId where
parseJSON = withText "OrderId" (either (fail . T.unpack) pure . parseOrderId)
parseOrderId :: Text -> Either Text OrderId
parseOrderId input = case validateIdDomainText (typeIdV7Domain "ord") input of
Left reason -> Left (T.pack (show reason))
Right () -> Right (OrderId input)
mkOrderId :: Text -> Either Text OrderId
mkOrderId = parseOrderId
orderIdText :: OrderId -> Text
orderIdText (OrderId value) = value
unsafeOrderIdFromLegacyText :: Text -> OrderId
unsafeOrderIdFromLegacyText = OrderId