module Prolude.Uuid 
    ( Uuid
    , randomUuid
    , textToUuid
    , uuidToText
    , wordsToUuid
    )
where

import Control.Monad.IO.Class (MonadIO(liftIO))
import qualified Data.Maybe as Maybe
import qualified Data.Text as Text
import qualified Data.UUID as UUID
import qualified Data.UUID.V4 as UUID
import qualified Data.Word as Word
import qualified System.IO as IO

type Uuid = UUID.UUID

uuidToText :: Uuid -> Text.Text
uuidToText :: Uuid -> Text
uuidToText = Uuid -> Text
UUID.toText

textToUuid :: Text.Text -> Maybe.Maybe Uuid
textToUuid :: Text -> Maybe Uuid
textToUuid = Text -> Maybe Uuid
UUID.fromText

wordsToUuid :: Word.Word32 -> Word.Word32 -> Word.Word32 -> Word.Word32 -> Uuid
wordsToUuid :: Word32 -> Word32 -> Word32 -> Word32 -> Uuid
wordsToUuid = Word32 -> Word32 -> Word32 -> Word32 -> Uuid
UUID.fromWords

randomUuid :: MonadIO m => m Uuid
randomUuid :: m Uuid
randomUuid = IO Uuid -> m Uuid
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO IO Uuid
UUID.nextRandom