Program compiles but without auth, uri parsing, or json error reporting
This commit is contained in:
+28
-21
@@ -3,17 +3,16 @@ module Main where
|
||||
import Paths_dbapi (version)
|
||||
|
||||
import App
|
||||
import Middleware (inTransaction, authenticated, withSavepoint, clientErrors,
|
||||
redirectInsecure, withDBConnection, Environment(..))
|
||||
--import Auth
|
||||
import Middleware
|
||||
|
||||
import Control.Monad (unless)
|
||||
import Control.Exception(bracket)
|
||||
import Data.String.Conversions (cs)
|
||||
import Network.Wai
|
||||
import Network.Wai.Middleware.Cors (cors)
|
||||
import Network.Wai.Handler.Warp hiding (Connection)
|
||||
import Network.Wai.Middleware.Gzip (gzip, def)
|
||||
import Network.Wai.Middleware.Static (staticPolicy, only)
|
||||
import Data.Pool(createPool, destroyAllResources)
|
||||
import Data.List (intercalate)
|
||||
import Data.Version (versionBranch)
|
||||
import qualified Hasql as H
|
||||
@@ -25,26 +24,34 @@ import Config (AppConfig(..), argParser, corsPolicy)
|
||||
main :: IO ()
|
||||
main = do
|
||||
conf <- execParser (info (helper <*> argParser) describe)
|
||||
bracket
|
||||
(createPool (connectPostgreSQL $ cs (configDbUri conf))
|
||||
close 1 600 (configPool conf))
|
||||
destroyAllResources
|
||||
(\pool -> do
|
||||
let port = configPort conf
|
||||
let port = configPort conf
|
||||
|
||||
unless (configSecure conf) $
|
||||
putStrLn "WARNING, running in insecure mode, auth will be in plaintext"
|
||||
unless (configSecure conf) $
|
||||
putStrLn "WARNING, running in insecure mode, auth will be in plaintext"
|
||||
|
||||
Prelude.putStrLn $ "Listening on port " ++ (show $ configPort conf :: String)
|
||||
let settings = setPort port
|
||||
. setServerName (cs $ "dbapi/" <> prettyVersion)
|
||||
$ defaultSettings
|
||||
runSettings settings $ (if configSecure conf then redirectInsecure else id)
|
||||
Prelude.putStrLn $ "Listening on port " ++ (show $ configPort conf :: String)
|
||||
|
||||
|
||||
let pgSettings = H.Postgres "localhost" 5432 "postgres" "" "postgres"
|
||||
|
||||
sessSettings <- maybe (fail "Improper session settings") return $
|
||||
H.sessionSettings 6 30
|
||||
|
||||
let settings = setPort port
|
||||
. setServerName (cs $ "dbapi/" <> prettyVersion)
|
||||
$ defaultSettings
|
||||
middle =
|
||||
(if configSecure conf then redirectInsecure else id)
|
||||
. gzip def . cors corsPolicy . clientErrors
|
||||
. staticPolicy (only [("favicon.ico", "static/favicon.ico")])
|
||||
. withDBConnection pool . inTransaction Production
|
||||
. authenticated (cs $ configAnonRole conf) . Middleware.withSavepoint Production $ app
|
||||
)
|
||||
. staticPolicy (only [("favicon.ico", "static/favicon.ico")]) in
|
||||
|
||||
runSettings settings $ middle (runApp pgSettings sessSettings)
|
||||
-- . authenticated (cs $ configAnonRole conf) $ app
|
||||
|
||||
where
|
||||
describe = progDesc "create a REST API to an existing Postgres database"
|
||||
prettyVersion = intercalate "." $ map show $ versionBranch version
|
||||
|
||||
runApp :: H.Postgres -> H.SessionSettings -> Application
|
||||
runApp pg sess req respond =
|
||||
respond =<< H.session pg sess (app req)
|
||||
|
||||
Reference in New Issue
Block a user