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 :: forall (r :: EffectRow) (m :: * -> *). (MonadIO m, Member (Embed m) r) => POSIXTime -> Sem r ULID getULIDTime POSIXTime time = m ULID -> Sem r ULID forall (m :: * -> *) (r :: EffectRow) a. Member (Embed m) r => m a -> Sem r a embed (m ULID -> Sem r ULID) -> m ULID -> Sem r ULID forall a b. (a -> b) -> a -> b $ IO ULID -> m ULID forall a. IO a -> m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO ULID -> m ULID) -> IO ULID -> m ULID forall a b. (a -> b) -> a -> b $ POSIXTime -> IO ULID ULID.getULIDTime POSIXTime time getULID :: forall r m. () => MonadIO m => Member (Embed m) r => Sem r ULID.ULID getULID :: forall (r :: EffectRow) (m :: * -> *). (MonadIO m, Member (Embed m) r) => Sem r ULID getULID = m ULID -> Sem r ULID forall (m :: * -> *) (r :: EffectRow) a. Member (Embed m) r => m a -> Sem r a embed (m ULID -> Sem r ULID) -> m ULID -> Sem r ULID forall a b. (a -> b) -> a -> b $ IO ULID -> m ULID forall a. IO a -> m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO IO ULID ULID.getULID ulidToInteger :: ULID.ULID -> Integer ulidToInteger :: ULID -> Integer ulidToInteger = ULID -> Integer ULID.ulidToInteger ulidFromInteger :: Integer -> Either Text ULID.ULID ulidFromInteger :: Integer -> Either Text ULID ulidFromInteger = Integer -> Either Text ULID ULID.ulidFromInteger