packages feed

hw-polysemy-0.2.14.11: core/HaskellWorks/Polysemy/Data/ULID.hs

module HaskellWorks.Polysemy.Data.ULID
  ( getULIDTime,
    getULID,
    ulidToInteger,
    ulidFromInteger,
  ) where

import           Control.Monad.IO.Class (MonadIO (..))
import           Data.Time.Clock.POSIX
import qualified Data.ULID              as ULID
import           HaskellWorks.Prelude
import           Polysemy

getULIDTime :: forall r m. ()
  => MonadIO m
  => Member (Embed m) r
  => POSIXTime
  -> Sem r ULID.ULID
getULIDTime time =
  embed $ liftIO $ ULID.getULIDTime time

getULID :: forall r m. ()
  => MonadIO m
  => Member (Embed m) r
  => Sem r ULID.ULID
getULID =
  embed $ liftIO ULID.getULID

ulidToInteger :: ULID.ULID -> Integer
ulidToInteger =
  ULID.ulidToInteger

ulidFromInteger :: Integer -> Either Text ULID.ULID
ulidFromInteger =
  ULID.ulidFromInteger