Verifies PostgreSQL version is supported (+9.2) before spawning server [fixes #157]
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
{-# LANGUAGE QuasiQuotes, ScopedTypeVariables #-}
|
||||
module Main where
|
||||
|
||||
import Paths_postgrest (version)
|
||||
@@ -17,12 +18,18 @@ import Network.Wai.Middleware.Static (staticPolicy, only)
|
||||
import Network.Wai.Middleware.RequestLogger (logStdout)
|
||||
import Data.List (intercalate)
|
||||
import Data.Version (versionBranch)
|
||||
import Data.Functor.Identity
|
||||
import Data.Text(Text)
|
||||
import qualified Hasql as H
|
||||
import qualified Hasql.Postgres as P
|
||||
import Options.Applicative hiding (columns)
|
||||
|
||||
import PostgREST.Config (AppConfig(..), argParser, corsPolicy)
|
||||
|
||||
isServerVersionSupported = do
|
||||
Identity (row :: Text) <- H.tx Nothing $ H.singleEx $ [H.stmt|SHOW server_version_num|]
|
||||
return $ read (cs row) >= 90200
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
let opts = info (helper <*> argParser) $
|
||||
@@ -61,6 +68,9 @@ main = do
|
||||
pool :: H.Pool P.Postgres
|
||||
<- H.acquirePool pgSettings poolSettings
|
||||
|
||||
resOrError <- H.session pool isServerVersionSupported
|
||||
either (fail . show) (\supported -> unless supported $ fail "Cannot run in this PostgreSQL version, PostgREST needs at least 9.2.0") resOrError
|
||||
|
||||
runSettings appSettings $ middle $ \req respond -> do
|
||||
body <- strictRequestBody req
|
||||
resOrError <- liftIO $ H.session pool $ H.tx Nothing $
|
||||
|
||||
Reference in New Issue
Block a user