This commit is contained in:
Ruslan Talpa
2015-10-27 14:14:04 +02:00
parent f02b8381ea
commit f7e6005087
3 changed files with 8 additions and 8 deletions
+4 -4
View File
@@ -61,7 +61,7 @@ import PostgREST.Types
import PostgREST.Auth (tokenJWT) import PostgREST.Auth (tokenJWT)
import Prelude import Prelude
import Debug.Trace --import Debug.Trace
app :: DbStructure -> AppConfig -> BL.ByteString -> Request -> H.Tx P.Postgres s Response app :: DbStructure -> AppConfig -> BL.ByteString -> Request -> H.Tx P.Postgres s Response
app dbstructure conf reqBody req = app dbstructure conf reqBody req =
@@ -444,8 +444,8 @@ parseGetRequest rootTableName httpRequest =
qParams = queryParams httpRequest qParams = queryParams httpRequest
augumentRequestWithJoin :: Text -> [Relation] -> ApiRequest -> Either Text ApiRequest augumentRequestWithJoin :: Text -> [Relation] -> ApiRequest -> Either Text ApiRequest
augumentRequestWithJoin schema allRels request = return request augumentRequestWithJoin schema allRels request =
>>= first formatRelationError . addRelations schema allRels Nothing (first formatRelationError . addRelations schema allRels Nothing) request
>>= addJoinConditions schema >>= addJoinConditions schema
-- we use strings here because most of this data will be sent to parsers (which need strings for now) -- we use strings here because most of this data will be sent to parsers (which need strings for now)
@@ -465,7 +465,7 @@ buildSelectApiRequest :: Text -> String -> [(String, String)] -> Maybe String ->
buildSelectApiRequest rootTableName sel wher orderS = buildSelectApiRequest rootTableName sel wher orderS =
first formatParserError $ foldr addFilter <$> (addOrder <$> apiRequest <*> ord) <*> flts first formatParserError $ foldr addFilter <$> (addOrder <$> apiRequest <*> ord) <*> flts
where where
apiRequest = parse (pRequestSelect rootTableName) ("failed to parse select parameter <<"++sel++">>") $ sel apiRequest = parse (pRequestSelect rootTableName) ("failed to parse select parameter <<"++sel++">>") sel
addOrder (Node (q,i) f) o = Node (q{order=o}, i) f addOrder (Node (q,i) f) o = Node (q{order=o}, i) f
flts = mapM pRequestFilter wher flts = mapM pRequestFilter wher
ord = traverse (parse pOrder ("failed to parse order parameter <<"++fromMaybe "" orderS++">>")) orderS ord = traverse (parse pOrder ("failed to parse order parameter <<"++fromMaybe "" orderS++">>")) orderS
+2 -2
View File
@@ -31,7 +31,7 @@ spec = afterAll_ resetDb $ around withApp $ do
simpleBody p `shouldBe` "" simpleBody p `shouldBe` ""
simpleStatus p `shouldBe` created201 simpleStatus p `shouldBe` created201
it "filters columns in result using &select" $ do it "filters columns in result using &select" $
request methodPost "/menagerie?select=integer,varchar" [("Prefer", "return=representation")] request methodPost "/menagerie?select=integer,varchar" [("Prefer", "return=representation")]
[json| { [json| {
"integer": 14, "double": 3.14159, "varchar": "testing!" "integer": 14, "double": 3.14159, "varchar": "testing!"
@@ -43,7 +43,7 @@ spec = afterAll_ resetDb $ around withApp $ do
, matchHeaders = ["Content-Type" <:> "application/json"] , matchHeaders = ["Content-Type" <:> "application/json"]
} }
it "includes related data after insert" $ do it "includes related data after insert" $
request methodPost "/projects?select=id,name,clients(id,name)" [("Prefer", "return=representation")] request methodPost "/projects?select=id,name,clients(id,name)" [("Prefer", "return=representation")]
[str|{"id":5,"name":"New Project","client_id":2}|] `shouldRespondWith` ResponseMatcher { [str|{"id":5,"name":"New Project","client_id":2}|] `shouldRespondWith` ResponseMatcher {
matchBody = Just [str|{"id":5,"name":"New Project","clients":{"id":2,"name":"Apple"}}|] matchBody = Just [str|{"id":5,"name":"New Project","clients":{"id":2,"name":"Apple"}}|]
+1 -1
View File
@@ -11,7 +11,7 @@ import SpecHelper
spec :: Spec spec :: Spec
spec = spec =
beforeAll (clearTable "items" >> createItems 15) beforeAll (clearTable "items" >> createItems 15)
. beforeAll (clearProjectsTable) . beforeAll clearProjectsTable
. beforeAll (clearTable "complex_items" >> createComplexItems) . beforeAll (clearTable "complex_items" >> createComplexItems)
. beforeAll (clearTable "nullable_integer" >> createNullInteger) . beforeAll (clearTable "nullable_integer" >> createNullInteger)
. beforeAll ( . beforeAll (