|
@@ -1,3 +1,4 @@
|
|
|
+{-# LANGUAGE BangPatterns #-}
|
|
|
{-# OPTIONS_GHC -fno-warn-orphans #-}
|
|
|
module Application
|
|
|
( makeApplication
|
|
@@ -6,6 +7,7 @@ module Application
|
|
|
|
|
|
import Import
|
|
|
import Control.Monad
|
|
|
+import Control.DeepSeq (force)
|
|
|
import System.Random
|
|
|
|
|
|
import qualified Database.Persist.Store
|
|
@@ -17,23 +19,25 @@ import Yesod.Default.Config
|
|
|
import Settings
|
|
|
|
|
|
getJsonR :: Handler RepJson
|
|
|
-getJsonR = jsonToRepJson $ object ["message" .= ("Hello, World!" :: Text)]
|
|
|
+getJsonR = jsonToRepJson $ object [("message", "Hello, World!" :: Text)]
|
|
|
|
|
|
getDBR :: Handler RepJson
|
|
|
getDBR = do
|
|
|
- (i, _) <- liftIO $ randomR (1, 10000) <$> newStdGen
|
|
|
- liftIO $ print i
|
|
|
+ !i <- liftIO $ randomRIO (1, 10000)
|
|
|
Just o <- runDB $ get $ Key $ PersistInt64 i
|
|
|
jsonToRepJson $ object ["id" .= i, "randomNumber" .= worldRandomNumber o]
|
|
|
|
|
|
getDB2R :: Int -> Handler RepJson
|
|
|
getDB2R n = do
|
|
|
- os <- runDB $ replicateM n $ do
|
|
|
- (i, _) <- liftIO $ randomR (1, 10000) <$> newStdGen
|
|
|
- Just o <- get $ Key $ PersistInt64 i
|
|
|
- return $ object ["id" .= i, "randomNumber" .= worldRandomNumber o]
|
|
|
+ !is <- force . take n . randomRs (1, 10000) <$> liftIO newStdGen
|
|
|
|
|
|
- jsonToRepJson $ array os
|
|
|
+ ns <- runDB $
|
|
|
+ forM is $ \i -> do
|
|
|
+ Just o <- get $ Key $ PersistInt64 i
|
|
|
+ return (i, worldRandomNumber o)
|
|
|
+
|
|
|
+ jsonToRepJson $ array
|
|
|
+ [ object ["id" .= i, "randomNumber" .= rn] | (i, rn) <- ns ]
|
|
|
|
|
|
mkYesodDispatch "App" resourcesApp
|
|
|
|