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"