mmzk-typeid-0.1.0.0: A TypeID implementation for Haskell
LicenseMIT
Maintainermmzk1526@outlook.com
PortabilityGHC
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.TypeID

Description

An implementation of the typeid specification: https://github.com/jetpack-io/typeid.

Synopsis

Data types

data TypeID Source #

The constructor is not exposed to the public API to prevent generating invalid TypeIDs.

Note that the Show instance is for debugging purposes only. To pretty-print a TypeID, use toString, toText or toByteString.

Instances

Instances details
Show TypeID Source # 
Instance details

Defined in Data.TypeID.Internal

Eq TypeID Source # 
Instance details

Defined in Data.TypeID.Internal

Methods

(==) :: TypeID -> TypeID -> Bool #

(/=) :: TypeID -> TypeID -> Bool #

Ord TypeID Source # 
Instance details

Defined in Data.TypeID.Internal

FromJSON TypeID Source # 
Instance details

Defined in Data.TypeID

ToJSON TypeID Source # 
Instance details

Defined in Data.TypeID

getPrefix :: TypeID -> Text Source #

Get the prefix of the TypeID.

getUUID :: TypeID -> UUID Source #

Get the UUID of the TypeID.

getTime :: TypeID -> Word64 Source #

Get the timestamp of the TypeID.

TypeID generation

genTypeID :: Text -> IO TypeID Source #

Generate a new TypeID from a prefix.

It throws a TypeIDError if the prefix does not match the specification, namely if it's longer than 63 characters or if it contains characters other than lowercase latin letters.

genTypeIDs :: Text -> Word16 -> IO [TypeID] Source #

Generate n TypeIDs from a prefix.

It tries its best to generate TypeIDs at the same timestamp, but it may not be possible if we are asking too many UUIDs at the same time.

It is guaranteed that the first 32768 TypeIDs are generated at the same timestamp.

nil :: TypeID Source #

The nil TypeID.

decorate :: Text -> UUID -> Either TypeIDError TypeID Source #

Obtain a TypeID from a prefix and a UUID.

Prefix validation

checkPrefix :: Text -> Maybe TypeIDError Source #

Check if the given prefix is a valid TypeID prefix.

Encoding & decoding

toString :: TypeID -> String Source #

Pretty-print a TypeID.

toText :: TypeID -> Text Source #

Pretty-print a TypeID to strict Text.

toByteString :: TypeID -> ByteString Source #

Pretty-print a TypeID to lazy ByteString.

parseString :: String -> Either TypeIDError TypeID Source #

Parse a TypeID from its String representation.

parseText :: Text -> Either TypeIDError TypeID Source #

Parse a TypeID from its string representation as a strict Text.

parseByteString :: ByteString -> Either TypeIDError TypeID Source #

Parse a TypeID from its string representation as a lazy ByteString.

parseStringWithPrefix :: Text -> String -> Either TypeIDError TypeID Source #

Parse a TypeID from the given prefix and the String representation of a suffix.

parseTextWithPrefix :: Text -> Text -> Either TypeIDError TypeID Source #

Parse a TypeID from the given prefix and the string representation of a suffix as a strict Text.

parseByteStringWithPrefix :: Text -> ByteString -> Either TypeIDError TypeID Source #

Parse a TypeID from the given prefix and the string representation of a suffix as a lazy ByteString.

Orphan instances