keiro-dsl-0.21.0.0: test/conformance-keyword-segments/Generated/KeywordSegments/Nominals/Internal.hs
-- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context keyword-segments generated nominal ID internals; do not edit.
module Generated.KeywordSegments.Nominals.Internal
( SubscriptionId
, parseSubscriptionId
, mkSubscriptionId
, subscriptionIdText
, unsafeSubscriptionIdFromLegacyText
) 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 SubscriptionId = SubscriptionId Text
deriving stock (Generic, Eq, Ord, Show)
instance CanonicalTypeName SubscriptionId
instance ToJSON SubscriptionId where
toJSON = toJSON . subscriptionIdText
instance FromJSON SubscriptionId where
parseJSON = withText "SubscriptionId" (either (fail . T.unpack) pure . parseSubscriptionId)
parseSubscriptionId :: Text -> Either Text SubscriptionId
parseSubscriptionId input = case validateIdDomainText (typeIdV7Domain "subscription") input of
Left reason -> Left (T.pack (show reason))
Right () -> Right (SubscriptionId input)
mkSubscriptionId :: Text -> Either Text SubscriptionId
mkSubscriptionId = parseSubscriptionId
subscriptionIdText :: SubscriptionId -> Text
subscriptionIdText (SubscriptionId value) = value
unsafeSubscriptionIdFromLegacyText :: Text -> SubscriptionId
unsafeSubscriptionIdFromLegacyText = SubscriptionId