cryptoid/src/Data/CryptoID.hs
2025-07-13 22:57:35 +02:00

31 lines
856 B
Haskell

-- TODO: avoid dependencies on aeson, http-api-data, path-pieces, and maybe deepseq
module Data.CryptoID
( CryptoID(..)
) where
import GHC.Generics (Generic)
import Data.Typeable (Typeable)
import Data.Data (Data)
import GHC.TypeLits (Symbol)
import Data.Binary (Binary)
import Foreign.Storable (Storable)
import Web.PathPieces (PathPiece)
import Web.HttpApiData (ToHttpApiData, FromHttpApiData)
import Control.DeepSeq (NFData)
import Data.Aeson (ToJSON, ToJSONKey, FromJSON, FromJSONKey)
import Data.Hashable (Hashable)
newtype CryptoID (namespace :: Symbol) a = CryptoID { ciphertext :: a }
deriving ( Eq, Ord
, Read, Show
, Binary, Storable, NFData, Hashable
, Data, Typeable, Generic
, PathPiece, ToHttpApiData, FromHttpApiData
, ToJSON, ToJSONKey, FromJSON, FromJSONKey
)