Share connection pool with all http clients

This commit is contained in:
Joe Nelson
2014-12-06 17:42:20 -08:00
parent d2888c62f1
commit da79f6cea1
3 changed files with 10 additions and 6 deletions
+2
View File
@@ -37,6 +37,7 @@ executable dbapi
, resource-pool, process , resource-pool, process
, blaze-builder , blaze-builder
, vector , vector
, mtl
Other-Modules: App Other-Modules: App
, Auth , Auth
, Config , Config
@@ -81,3 +82,4 @@ Test-Suite spec
, resource-pool , resource-pool
, blaze-builder , blaze-builder
, vector , vector
, mtl
+1 -5
View File
@@ -1,5 +1,5 @@
{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleContexts #-}
module App (runApp, app) where module App (app) where
import Control.Monad (join) import Control.Monad (join)
import Data.Monoid ( (<>) ) import Data.Monoid ( (<>) )
@@ -33,10 +33,6 @@ import RangeQuery
import PgStructure import PgStructure
import Auth import Auth
runApp :: H.Postgres -> H.SessionSettings -> Application
runApp pg sess req respond =
respond =<< H.session pg sess (app req)
app :: Request -> H.Session H.Postgres IO Response app :: Request -> H.Session H.Postgres IO Response
app req = app req =
case (path, verb) of case (path, verb) of
+7 -1
View File
@@ -7,6 +7,8 @@ import App
import Middleware import Middleware
import Control.Monad (unless) import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Control.Monad.Reader (runReaderT, ask)
import Data.String.Conversions (cs) import Data.String.Conversions (cs)
import Network.Wai.Middleware.Cors (cors) import Network.Wai.Middleware.Cors (cors)
import Network.Wai.Handler.Warp hiding (Connection) import Network.Wai.Handler.Warp hiding (Connection)
@@ -44,7 +46,11 @@ main = do
. gzip def . cors corsPolicy . clientErrors . gzip def . cors corsPolicy . clientErrors
. staticPolicy (only [("favicon.ico", "static/favicon.ico")]) in . staticPolicy (only [("favicon.ico", "static/favicon.ico")]) in
runSettings appSettings $ middle (runApp pgSettings sessSettings) H.session pgSettings sessSettings $ do
session' <- flip runReaderT <$> ask
let runApp req respond = respond =<< session' (app req) in
liftIO $ runSettings appSettings $ middle runApp
-- . authenticated (cs $ configAnonRole conf) $ app -- . authenticated (cs $ configAnonRole conf) $ app
where where