diff --git a/src/PostgREST/App.hs b/src/PostgREST/App.hs index 0ca42482d..6c2ba9694 100644 --- a/src/PostgREST/App.hs +++ b/src/PostgREST/App.hs @@ -66,11 +66,9 @@ app conf reqBody req = from = fromMaybe 0 $ rangeOffset <$> range count = if hasPrefer "count=none" then countNone - else countRows qt + else whereT qt qq $ countRows qt query = B.Stmt "select " V.empty True <> - parentheticT ( - whereT qt qq count - ) <> commaq <> ( + parentheticT count <> commaq <> ( bodyForAccept contentType qt . limitT range . orderT (orderParse qq) diff --git a/test/Feature/RangeSpec.hs b/test/Feature/RangeSpec.hs index 3d3641279..35c22a27b 100644 --- a/test/Feature/RangeSpec.hs +++ b/test/Feature/RangeSpec.hs @@ -37,6 +37,15 @@ spec = beforeAll (clearTable "items" >> createItems 15) . afterAll_ (clearTable , matchHeaders = ["Content-Range" <:> "0-14/*"] } + it "returns range Content-Range with range/* even using other filters" $ + request methodGet "/items?id=eq.1&order=id" + [("Prefer", "count=none")] "" + `shouldRespondWith` ResponseMatcher { + matchBody = Just [json| [{"id":1}] |] + , matchStatus = 200 + , matchHeaders = ["Content-Range" <:> "0-0/*"] + } + context "with range headers" $ do context "of acceptable range" $ do