packages feed

ez-couch-0.4.0: src/EZCouch/Ids.hs

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 . encodeUnsigned
  where 
    zeroPad l s = (replicate (l - length s) '0') ++ s  

generateId = (++) <$> fmap encodeUnsigned getPicos <*> getRndSuffix 3 

main = do
  generateId >>= putStrLn . pack
  generateId >>= putStrLn . pack
  generateId >>= putStrLn . pack