{-# LANGUAGE DeriveGeneric, GeneralizedNewtypeDeriving #-}
module OpenSuse.Types.RequestId
( RequestId, mkRequestId, unRequestId
, ReleaseRequestId, MaintenanceRequestId
)
where
import OpenSuse.Prelude
newtype RequestId = RequestId Natural
deriving (Show, Eq, Ord, Enum, Generic, Hashable, Binary, NFData)
mkRequestId :: Natural -> RequestId
mkRequestId = RequestId
unRequestId :: RequestId -> Natural
unRequestId (RequestId n) = n
type MaintenanceRequestId = RequestId
type ReleaseRequestId = RequestId
instance FromJSON RequestId
instance ToJSON RequestId
instance IsString RequestId where
fromString = parse "request id"
instance Pretty RequestId where
pPrint = pPrint . unRequestId
instance HasParser RequestId where
parser = mkRequestId <$> parser