module EZCouch.Ids (generateId) where import Prelude () import ClassyPrelude import Data.Time.Clock.POSIX import System.Random import EZCouch.Base62 getPicos = getPOSIXTime >>= return . round . (* 1000000) getRndSuffix l = (randomRIO (0, charsLength ^ l) :: IO Word64) >>= return . zeroPad l . fromUnsigned64 where zeroPad l s = (replicate (l - length s) '0') ++ s generateId = (++) <$> fmap fromUnsigned64 getPicos <*> getRndSuffix 3 main = do generateId >>= putStrLn . pack generateId >>= putStrLn . pack generateId >>= putStrLn . pack