From a980db6d2d3de48dae9e103aa464fb19bc89a1d9 Mon Sep 17 00:00:00 2001 From: Diogo Biazus Date: Fri, 22 May 2015 12:20:10 -0400 Subject: [PATCH] Adds spec for @@ operator and implements it in PgQuery --- src/PostgREST/PgQuery.hs | 2 ++ test/Feature/QuerySpec.hs | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/PostgREST/PgQuery.hs b/src/PostgREST/PgQuery.hs index d1adffa1d..d14e827ff 100644 --- a/src/PostgREST/PgQuery.hs +++ b/src/PostgREST/PgQuery.hs @@ -175,6 +175,7 @@ wherePred (col, predicate) = "like" -> unknownLiteral $ T.map star value "ilike" -> unknownLiteral $ T.map star value "in" -> "(" <> T.intercalate ", " (map unknownLiteral $ T.split (==',') value) <> ") " + "@@" -> "to_tsquery(" <> unknownLiteral value <> ") " _ -> unknownLiteral value op = case opCode of @@ -189,6 +190,7 @@ wherePred (col, predicate) = "in" -> "in" "is" -> "is" "isnot" -> "is not" + "@@" -> "@@" _ -> "=" orderParse :: Net.Query -> [OrderTerm] diff --git a/test/Feature/QuerySpec.hs b/test/Feature/QuerySpec.hs index f70e0ff3e..6b48e518c 100644 --- a/test/Feature/QuerySpec.hs +++ b/test/Feature/QuerySpec.hs @@ -56,6 +56,10 @@ spec = get "/simple_pk?k=ilike.*YY*&order=extra.asc" `shouldRespondWith` "[{\"k\":\"xyyx\",\"extra\":\"u\"},{\"k\":\"xYYx\",\"extra\":\"v\"}]" + it "matches with tsearch @@" $ + get "/tsearch?text_search_vector=@@.foo" `shouldRespondWith` + "[{\"text_search_vector\":\"'bar':2 'foo':1\"}]" + describe "ordering response" $ do it "by a column asc" $ get "/items?id=lte.2&order=id.asc"