Merge pull request #89 from begriffs/release

cleanup connections on close.
This commit is contained in:
Joe Nelson
2014-10-28 15:26:27 -07:00
+8 -2
View File
@@ -9,13 +9,14 @@ import Data.String.Conversions (cs)
import Control.Monad (unless) import Control.Monad (unless)
import Control.Applicative import Control.Applicative
import Control.Exception(bracket)
import Options.Applicative hiding (columns) import Options.Applicative hiding (columns)
import Network.Wai.Middleware.Gzip (gzip, def) import Network.Wai.Middleware.Gzip (gzip, def)
import Network.Wai.Middleware.Cors (cors) import Network.Wai.Middleware.Cors (cors)
import Network.Wai.Middleware.Static (staticPolicy, only) import Network.Wai.Middleware.Static (staticPolicy, only)
import Database.HDBC (disconnect) import Database.HDBC (disconnect)
import Database.HDBC.PostgreSQL(connectPostgreSQL') import Database.HDBC.PostgreSQL(connectPostgreSQL')
import Data.Pool(createPool) import Data.Pool(createPool, destroyAllResources)
argParser :: Parser AppConfig argParser :: Parser AppConfig
argParser = AppConfig argParser = AppConfig
@@ -33,7 +34,11 @@ argParser = AppConfig
main :: IO () main :: IO ()
main = do main = do
conf <- execParser (info (helper <*> argParser) describe) conf <- execParser (info (helper <*> argParser) describe)
pool <- createPool (connectPostgreSQL' (configDbUri conf)) disconnect 1 600 (configPool conf) bracket
(createPool (connectPostgreSQL' (configDbUri conf))
disconnect 1 600 (configPool conf))
destroyAllResources
(\pool -> do
let port = configPort conf let port = configPort conf
unless (configSecure conf) $ unless (configSecure conf) $
@@ -45,5 +50,6 @@ main = do
. staticPolicy (only [("favicon.ico", "static/favicon.ico")]) . staticPolicy (only [("favicon.ico", "static/favicon.ico")])
. withDBConnection pool . inTransaction . withDBConnection pool . inTransaction
. authenticated (cs $ configAnonRole conf) . withSavepoint $ app . authenticated (cs $ configAnonRole conf) . withSavepoint $ app
)
where where
describe = progDesc "create a REST API to an existing Postgres database" describe = progDesc "create a REST API to an existing Postgres database"