From 74e68408e61d69f825bd1e20dc8e413b7e59495b Mon Sep 17 00:00:00 2001 From: Joe Nelson Date: Wed, 19 Oct 2016 22:25:58 -0700 Subject: [PATCH] Bring packages up to date (#722) * Bring packages up to date * New LTS includes deps now Use stack to select most versions * Alphabetize packages * Strip down packages Switch tests to protolude * Appease cabal check with base version constraint --- postgrest.cabal | 120 ++++++++----------------------- src/PostgREST/Config.hs | 4 +- src/PostgREST/DbStructure.hs | 1 - src/PostgREST/QueryBuilder.hs | 3 +- stack.yaml | 19 +---- test/Feature/AuthSpec.hs | 2 + test/Feature/ConcurrentSpec.hs | 2 + test/Feature/CorsSpec.hs | 2 + test/Feature/DeleteSpec.hs | 2 + test/Feature/InsertSpec.hs | 4 +- test/Feature/NoJwtSpec.hs | 2 + test/Feature/ProxySpec.hs | 2 + test/Feature/QueryLimitedSpec.hs | 2 + test/Feature/QuerySpec.hs | 2 + test/Feature/RangeSpec.hs | 2 + test/Feature/StructureSpec.hs | 2 + test/Feature/UnicodeSpec.hs | 2 + test/Main.hs | 8 ++- test/SpecHelper.hs | 14 ++-- 19 files changed, 72 insertions(+), 123 deletions(-) diff --git a/postgrest.cabal b/postgrest.cabal index 119428bbb..2c9346c1a 100644 --- a/postgrest.cabal +++ b/postgrest.cabal @@ -23,119 +23,83 @@ Flag CI executable postgrest main-is: Main.hs - default-extensions: OverloadedStrings, ScopedTypeVariables, QuasiQuotes, NoImplicitPrelude + default-extensions: OverloadedStrings, QuasiQuotes, NoImplicitPrelude ghc-options: -threaded -rtsopts "-with-rtsopts=-N -I2" default-language: Haskell2010 - build-depends: aeson (>= 0.8 && < 0.10) || (>= 0.11 && < 0.12) - , auto-update - , base >= 4.8 && < 6 - , bytestring - , bytestring-tree-builder == 0.2.7 - , case-insensitive - , cassava - , containers - , contravariant - , errors - , hasql == 0.19.12 - , hasql-pool == 0.4.1 - , hasql-transaction == 0.4.5.1 - , http-types >= 0.9 && < 0.10 - , interpolatedstring-perl6 - , jwt - , lens >=3.8 && < 5.0 - , lens-aeson >= 1.0.0.0 && < 1.1.0.0 - , mtl - , optparse-applicative >= 0.11 && < 0.13 - , parsec - , postgresql-binary == 0.9.0.1 + build-depends: auto-update + , base + , hasql + , hasql-pool , postgrest - , regex-tdfa - , safe >= 0.3 && < 0.4 - , scientific + , protolude , text , time - , transformers - , unordered-containers - , vector - , wai >= 3.0.1 - , wai-cors - , wai-extra - , wai-middleware-static >= 0.6.0 - , warp >= 3.1.0 - , insert-ordered-containers >= 0.1.0.1 - , swagger2 >= 2.1 - , network-uri >= 2.6.1.0 - , HTTP - , Ranged-sets - , protolude >= 0.1.5 && < 0.2.0 + , warp if !os(windows) - build-depends: unix >= 2.7 && < 3 + build-depends: unix hs-source-dirs: main library default-language: Haskell2010 - default-extensions: OverloadedStrings, ScopedTypeVariables, QuasiQuotes, NoImplicitPrelude + default-extensions: OverloadedStrings, QuasiQuotes, NoImplicitPrelude build-depends: aeson - , base + , base >= 4.8 && < 6 , bytestring , case-insensitive , cassava , containers , contravariant - , errors , hasql - , hasql-transaction - , hasql-pool + , hasql-pool == 0.4.1 + , hasql-transaction == 0.4.5.1 + , HTTP , http-types + , insert-ordered-containers , interpolatedstring-perl6 , jwt , lens , lens-aeson - , mtl + , network-uri , optparse-applicative , parsec + , protolude + , Ranged-sets == 0.3.0 , regex-tdfa , safe , scientific + , swagger2 , text , time , unordered-containers , vector - , HTTP - , Ranged-sets - , wai >= 3.0.1 + , wai , wai-cors , wai-extra - , wai-middleware-static >= 0.6.0 - , warp >= 3.1.0 - , insert-ordered-containers >= 0.1.0.1 - , swagger2 >= 2.1 - , protolude >= 0.1.5 && < 0.2.0 - , network-uri >= 2.6.1.0 + , wai-middleware-static Other-Modules: Paths_postgrest - Exposed-Modules: PostgREST.App + Exposed-Modules: PostgREST.ApiRequest + , PostgREST.App , PostgREST.Auth , PostgREST.Config + , PostgREST.DbStructure , PostgREST.Error , PostgREST.Middleware + , PostgREST.OpenAPI , PostgREST.Parsers - , PostgREST.DbStructure , PostgREST.QueryBuilder , PostgREST.RangeQuery - , PostgREST.ApiRequest , PostgREST.Types - , PostgREST.OpenAPI hs-source-dirs: src Test-Suite spec Type: exitcode-stdio-1.0 Default-Language: Haskell2010 - default-extensions: OverloadedStrings, ScopedTypeVariables, QuasiQuotes + default-extensions: OverloadedStrings, QuasiQuotes, NoImplicitPrelude ghc-options: -threaded -rtsopts -with-rtsopts=-N Hs-Source-Dirs: test Main-Is: Main.hs @@ -145,63 +109,41 @@ Test-Suite spec , Feature.DeleteSpec , Feature.InsertSpec , Feature.NoJwtSpec - , Feature.QuerySpec + , Feature.ProxySpec , Feature.QueryLimitedSpec + , Feature.QuerySpec , Feature.RangeSpec , Feature.StructureSpec , Feature.UnicodeSpec , SpecHelper , TestTypes Build-Depends: aeson - , auto-update , aeson-qq , async + , auto-update , base - , protolude , base64-string , bytestring , case-insensitive , cassava - , containers , contravariant - , errors , hasql , hasql-pool - , hasql-transaction , heredoc + , hjsonpointer + , hjsonschema , hspec , hspec-wai , hspec-wai-json , http-types - , interpolatedstring-perl6 - , jwt , lens , lens-aeson , monad-control - , mtl - , optparse-applicative - , parsec , postgrest , process + , protolude , regex-tdfa - , safe - , scientific - , string-conversions - , text , time - , transformers , transformers-base - , unordered-containers - , vector , wai - , wai-cors , wai-extra - , wai-middleware-static - , warp - , insert-ordered-containers - , hjsonpointer - , hjsonschema - , swagger2 - , network-uri - , HTTP - , Ranged-sets diff --git a/src/PostgREST/Config.hs b/src/PostgREST/Config.hs index 0655641d6..eee8b9a34 100644 --- a/src/PostgREST/Config.hs +++ b/src/PostgREST/Config.hs @@ -19,7 +19,6 @@ module PostgREST.Config ( prettyVersion ) where -import Control.Applicative import qualified Data.ByteString.Char8 as BS import qualified Data.CaseInsensitive as CI import Data.List (lookup) @@ -29,7 +28,8 @@ import Network.Wai import Network.Wai.Middleware.Cors (CorsResourcePolicy (..)) import Options.Applicative import Paths_postgrest (version) -import Protolude hiding (intercalate) +import Protolude hiding (intercalate + , (<>)) import Safe (readMay) -- | Data type to store all command line options diff --git a/src/PostgREST/DbStructure.hs b/src/PostgREST/DbStructure.hs index b5e4945ae..dfcfb94e3 100644 --- a/src/PostgREST/DbStructure.hs +++ b/src/PostgREST/DbStructure.hs @@ -15,7 +15,6 @@ import qualified Hasql.Query as H import Control.Applicative import Data.List (elemIndex) import Data.Maybe (fromJust) -import Data.Monoid import Data.Text (split, strip, breakOn, dropAround) import qualified Data.Text as T diff --git a/src/PostgREST/QueryBuilder.hs b/src/PostgREST/QueryBuilder.hs index c5476e424..b1cc8e701 100644 --- a/src/PostgREST/QueryBuilder.hs +++ b/src/PostgREST/QueryBuilder.hs @@ -35,7 +35,6 @@ import qualified Hasql.Decoders as HD import qualified Data.Aeson as JSON import PostgREST.RangeQuery (NonnegRange, rangeLimit, rangeOffset, allRange) -import Control.Error (note, hush) import Data.Functor.Contravariant (contramap) import qualified Data.HashMap.Strict as HM import Data.Text (intercalate, unwords, replace, isInfixOf, toLower, split) @@ -361,7 +360,7 @@ requestToQuery schema isParent (DbRead (Node (Select colSelects tbls conditions <> "FROM (" <> subquery <> ") " <> pgFmtIdent table <> "), '[]') AS " <> pgFmtIdent (fromMaybe name alias) where subquery = requestToQuery schema False (DbRead (Node n forst)) - + getQueryParts (Node n@(_, (name, Just r@Relation{relType=Parent,relTable=Table{tableName=table}}, alias)) forst) (j,s) = (joi:j,sel:s) where node_name = fromMaybe name alias diff --git a/stack.yaml b/stack.yaml index d38402988..f8bcfb9d0 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,24 +1,7 @@ -resolver: lts-6.7 +resolver: lts-7.4 extra-deps: - Ranged-sets-0.3.0 - - bytestring-tree-builder-0.2.7 - - hasql-0.19.12 - hasql-pool-0.4.1 - hasql-transaction-0.4.5.1 - - jwt-0.7.2 - - postgresql-binary-0.9.0.1 - - binary-parser-0.5.2 - - contravariant-extras-0.3.2 - - placeholders-0.1 - - postgresql-error-codes-1 - - success-0.2.6 - - tuple-th-0.2.5 - - wai-cors-0.2.5 - - cryptohash-sha256-0.11.100.0 - - hackage-security-0.5.2.1 - - swagger2-2.1 - - hjsonpointer-0.3.0.1 - - hjsonschema-1.0.0.0 - - network-uri-2.6.1.0 ghc-options: postgrest: -O2 -Werror -Wall -fwarn-identities diff --git a/test/Feature/AuthSpec.hs b/test/Feature/AuthSpec.hs index bda4931a4..6281a5866 100644 --- a/test/Feature/AuthSpec.hs +++ b/test/Feature/AuthSpec.hs @@ -9,6 +9,8 @@ import Network.HTTP.Types import SpecHelper import Network.Wai (Application) + +import Protolude hiding (get) -- }}} spec :: SpecWith Application diff --git a/test/Feature/ConcurrentSpec.hs b/test/Feature/ConcurrentSpec.hs index be154375d..d06f8ebc1 100644 --- a/test/Feature/ConcurrentSpec.hs +++ b/test/Feature/ConcurrentSpec.hs @@ -16,6 +16,8 @@ import Network.Wai.Test (Session) import Network.Wai (Application) +import Protolude hiding (get) + spec :: SpecWith Application spec = describe "Queryiny in parallel" $ diff --git a/test/Feature/CorsSpec.hs b/test/Feature/CorsSpec.hs index 81564d277..2efcd9673 100644 --- a/test/Feature/CorsSpec.hs +++ b/test/Feature/CorsSpec.hs @@ -10,6 +10,8 @@ import SpecHelper import Network.HTTP.Types import Network.Wai (Application) + +import Protolude hiding (get) -- }}} spec :: SpecWith Application diff --git a/test/Feature/DeleteSpec.hs b/test/Feature/DeleteSpec.hs index 4a22e9ad6..685f5b09b 100644 --- a/test/Feature/DeleteSpec.hs +++ b/test/Feature/DeleteSpec.hs @@ -7,6 +7,8 @@ import Text.Heredoc import Network.HTTP.Types import Network.Wai (Application) +import Protolude hiding (get) + spec :: SpecWith Application spec = describe "Deleting" $ do diff --git a/test/Feature/InsertSpec.hs b/test/Feature/InsertSpec.hs index 6916fce05..03522ac86 100644 --- a/test/Feature/InsertSpec.hs +++ b/test/Feature/InsertSpec.hs @@ -8,8 +8,8 @@ import Network.Wai.Test (SResponse(simpleBody,simpleHeaders,simpleStatus)) import SpecHelper import qualified Data.Aeson as JSON +import Data.List (lookup) import Data.Maybe (fromJust) -import Data.Monoid ((<>)) import Text.Heredoc import Network.HTTP.Types.Header import Network.HTTP.Types @@ -18,6 +18,8 @@ import Control.Monad (replicateM_, void) import TestTypes(IncPK(..), CompoundPK(..)) import Network.Wai (Application) +import Protolude hiding (get) + spec :: SpecWith Application spec = do describe "Posting new record" $ do diff --git a/test/Feature/NoJwtSpec.hs b/test/Feature/NoJwtSpec.hs index 148123f5f..5f1f1b3f9 100644 --- a/test/Feature/NoJwtSpec.hs +++ b/test/Feature/NoJwtSpec.hs @@ -7,6 +7,8 @@ import Network.HTTP.Types import SpecHelper import Network.Wai (Application) + +import Protolude hiding (get) -- }}} spec :: SpecWith Application diff --git a/test/Feature/ProxySpec.hs b/test/Feature/ProxySpec.hs index c66fc9cdd..d9b44d9d9 100644 --- a/test/Feature/ProxySpec.hs +++ b/test/Feature/ProxySpec.hs @@ -6,6 +6,8 @@ import SpecHelper import Network.Wai (Application) +import Protolude hiding (get) + spec :: SpecWith Application spec = describe "GET / with proxy" $ diff --git a/test/Feature/QueryLimitedSpec.hs b/test/Feature/QueryLimitedSpec.hs index 5300706ca..3337fc5ff 100644 --- a/test/Feature/QueryLimitedSpec.hs +++ b/test/Feature/QueryLimitedSpec.hs @@ -9,6 +9,8 @@ import Text.Heredoc import SpecHelper import Network.Wai (Application) +import Protolude hiding (get) + spec :: SpecWith Application spec = describe "Requesting many items with server limits enabled" $ do diff --git a/test/Feature/QuerySpec.hs b/test/Feature/QuerySpec.hs index ec11e7bf3..2591a90c9 100644 --- a/test/Feature/QuerySpec.hs +++ b/test/Feature/QuerySpec.hs @@ -10,6 +10,8 @@ import SpecHelper import Text.Heredoc import Network.Wai (Application) +import Protolude hiding (get) + spec :: SpecWith Application spec = do diff --git a/test/Feature/RangeSpec.hs b/test/Feature/RangeSpec.hs index 0c7f700b4..3958cdee5 100644 --- a/test/Feature/RangeSpec.hs +++ b/test/Feature/RangeSpec.hs @@ -12,6 +12,8 @@ import SpecHelper import Text.Heredoc import Network.Wai (Application) +import Protolude hiding (get) + defaultRange :: BL.ByteString defaultRange = [json| { "min": 0, "max": 15 } |] diff --git a/test/Feature/StructureSpec.hs b/test/Feature/StructureSpec.hs index 9c0f2acb3..9b9772d94 100644 --- a/test/Feature/StructureSpec.hs +++ b/test/Feature/StructureSpec.hs @@ -13,6 +13,8 @@ import SpecHelper import Network.Wai (Application) import Network.Wai.Test (SResponse(..)) +import Protolude hiding (get) + spec :: SpecWith Application spec = do diff --git a/test/Feature/UnicodeSpec.hs b/test/Feature/UnicodeSpec.hs index 99f93a20f..7a1267f5e 100644 --- a/test/Feature/UnicodeSpec.hs +++ b/test/Feature/UnicodeSpec.hs @@ -6,6 +6,8 @@ import Test.Hspec.Wai.JSON import Network.Wai (Application) import Control.Monad (void) +import Protolude hiding (get) + spec :: SpecWith Application spec = describe "Reading and writing to unicode schema and table names" $ diff --git a/test/Main.hs b/test/Main.hs index 63d5aa158..e7ca843cd 100644 --- a/test/Main.hs +++ b/test/Main.hs @@ -8,8 +8,8 @@ import qualified Hasql.Pool as P import PostgREST.DbStructure (getDbStructure) import PostgREST.App (postgrest) import Control.AutoUpdate +import Data.Function (id) import Data.IORef -import Data.String.Conversions (cs) import Data.Time.Clock.POSIX (getPOSIXTime) import qualified Feature.AuthSpec @@ -25,18 +25,20 @@ import qualified Feature.StructureSpec import qualified Feature.UnicodeSpec import qualified Feature.ProxySpec +import Protolude + main :: IO () main = do setupDb - pool <- P.acquire (3, 10, cs testDbConn) + pool <- P.acquire (3, 10, toS testDbConn) -- ask for the OS time at most once per second getTime <- mkAutoUpdate defaultUpdateSettings { updateAction = getPOSIXTime } result <- P.use pool $ getDbStructure "test" - refDbStructure <- newIORef $ either (error.show) id result + refDbStructure <- newIORef $ either (panic.show) id result let withApp = return $ postgrest testCfg refDbStructure pool getTime ltdApp = return $ postgrest testLtdRowsCfg refDbStructure pool getTime unicodeApp = return $ postgrest testUnicodeCfg refDbStructure pool getTime diff --git a/test/SpecHelper.hs b/test/SpecHelper.hs index 97675dbc8..8f61a3d16 100644 --- a/test/SpecHelper.hs +++ b/test/SpecHelper.hs @@ -1,10 +1,10 @@ module SpecHelper where -import Data.String.Conversions (cs) import Control.Monad (void) import Codec.Binary.Base64.String (encode) import Data.CaseInsensitive (CI(..)) +import Data.List (lookup) import Text.Regex.TDFA ((=~)) import qualified Data.ByteString.Char8 as BS import System.Process (readProcess) @@ -21,7 +21,7 @@ import Data.Maybe (fromJust) import Data.Aeson (decode) import qualified Data.JsonSchema.Draft4 as D4 -import Data.Text +import Protolude validateOpenApiResponse :: [Header] -> WaiSession () validateOpenApiResponse headers = do @@ -98,14 +98,14 @@ acceptHdrs mime = [(hAccept, mime)] rangeUnit :: Header rangeUnit = ("Range-Unit" :: CI BS.ByteString, "items") -matchHeader :: CI BS.ByteString -> String -> [Header] -> Bool +matchHeader :: CI BS.ByteString -> BS.ByteString -> [Header] -> Bool matchHeader name valRegex headers = maybe False (=~ valRegex) $ lookup name headers -authHeaderBasic :: String -> String -> Header +authHeaderBasic :: BS.ByteString -> BS.ByteString -> Header authHeaderBasic u p = - (hAuthorization, cs $ "Basic " ++ encode (u ++ ":" ++ p)) + (hAuthorization, "Basic " <> (toS . encode . toS $ u <> ":" <> p)) -authHeaderJWT :: String -> Header +authHeaderJWT :: BS.ByteString -> Header authHeaderJWT token = - (hAuthorization, cs $ "Bearer " ++ token) + (hAuthorization, "Bearer " <> token)