From f678dff7352d497b9ba0fc971b04cb8c8f4cbe5d Mon Sep 17 00:00:00 2001 From: Ruslan Talpa Date: Tue, 24 Nov 2015 09:39:44 +0200 Subject: [PATCH] disambiguate range selection when plurality=singular --- src/PostgREST/ApiRequest.hs | 3 ++- src/PostgREST/QueryBuilder.hs | 5 +---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/PostgREST/ApiRequest.hs b/src/PostgREST/ApiRequest.hs index ce228b948..10eb324c2 100644 --- a/src/PostgREST/ApiRequest.hs +++ b/src/PostgREST/ApiRequest.hs @@ -20,6 +20,7 @@ import PostgREST.RangeQuery (NonnegRange, rangeRequested) import PostgREST.Types (QualifiedIdentifier (..), Schema, Payload(..), UniformObjects(..)) +import Data.Ranged.Ranges (singletonRange) type RequestBody = BL.ByteString @@ -114,7 +115,7 @@ userApiRequest schema req reqBody = ApiRequest { iAction = action - , iRange = if singular then Nothing else rangeRequested hdrs + , iRange = if singular then Just (singletonRange 0) else rangeRequested hdrs , iTarget = target , iAccepts = pickContentType $ lookupHeader "accept" , iPayload = relevantPayload diff --git a/src/PostgREST/QueryBuilder.hs b/src/PostgREST/QueryBuilder.hs index e73ab758f..1445ffec3 100644 --- a/src/PostgREST/QueryBuilder.hs +++ b/src/PostgREST/QueryBuilder.hs @@ -34,7 +34,6 @@ import qualified Data.Aeson as JSON import PostgREST.RangeQuery (NonnegRange, rangeLimit, rangeOffset) import Control.Error (note, fromMaybe, mapMaybe) -import Data.Maybe (isNothing) import Control.Monad (join) import qualified Data.HashMap.Strict as HM import Data.List (find) @@ -55,8 +54,6 @@ import Data.Scientific ( FPFormat (..) ) import Prelude hiding (unwords) -import Data.Ranged.Ranges (singletonRange) - type PStmt = H.Stmt P.Postgres instance Monoid PStmt where mappend (B.Stmt query params prep) (B.Stmt query' params' prep') = @@ -74,7 +71,7 @@ createReadStatement selectQuery range isSingle countTable asCsv = if asCsv then asCsvF else if isSingle then asJsonSingleF else asJsonF - ] selectStarF (if isNothing range && isSingle then Just $ singletonRange 0 else range) + ] selectStarF range ) V.empty True createWriteStatement :: SqlQuery -> SqlQuery -> Bool -> Bool ->