git.iko.soy/typeable/bloodhound
on master help sign in
Merge pull request #43 from bnordbo/master

Add Query Filter

commit0445b825a4514c7ced5c1568401c7362bede0a55 authorChris Allen <cma@bitemyapp.com> dateSat 11 Jul 2015, 18:37 (11 years ago) parent404d807c403313
2 files changed+22−1
src/Database/Bloodhound/Types.hs+8 tests/tests.hs+14−1
src/Database/Bloodhound/Types.hs+8
@@ -1063,6 +1063,7 @@ data Filter = AndFilter [Filter] Cache
10631063 | LimitFilter Int
10641064 | MissingFilter FieldName Existence NullValue
10651065 | PrefixFilter FieldName PrefixValue Cache
1066+ | QueryFilter Query Cache
10661067 | RangeFilter FieldName RangeValue RangeExecution Cache
10671068 | RegexpFilter FieldName Regexp RegexpFlags CacheName Cache CacheKey
10681069 | TermFilter Term Cache
@@ -1505,6 +1506,13 @@ instance ToJSON Filter where
15051506 object [fieldName .= fieldValue
15061507 , "_cache" .= cache]]
15071508
1509+ toJSON (QueryFilter query False) =
1510+ object ["query" .= toJSON query ]
1511+ toJSON (QueryFilter query True) =
1512+ object ["fquery" .=
1513+ object [ "query" .= toJSON query
1514+ , "_cache" .= True ]]
1515+
15081516 toJSON (RangeFilter (FieldName fieldName) rangeValue rangeExecution cache) =
15091517 object ["range" .=
15101518 object [ fieldName .= object (rangeValueToPair rangeValue)
tests/tests.hs+14−1
@@ -543,7 +543,6 @@ main = hspec $ do
543543 liftIO $
544544 myTweet `shouldBe` Right exampleTweet
545545
546−
547546 it "returns document for regexp filter" $ withTestEnv $ do
548547 _ <- insertData
549548 let filter = RegexpFilter (FieldName "user") (Regexp "bite.*app")
@@ -561,6 +560,20 @@ main = hspec $ do
561560 let search = mkSearch Nothing (Just filter)
562561 searchExpectNoResults search
563562
563+ it "returns document for query filter, uncached" $ withTestEnv $ do
564+ _ <- insertData
565+ let filter = QueryFilter (TermQuery (Term "user" "bitemyapp") Nothing) True
566+ search = mkSearch Nothing (Just filter)
567+ myTweet <- searchTweet search
568+ liftIO $ myTweet `shouldBe` Right exampleTweet
569+
570+ it "returns document for query filter, cached" $ withTestEnv $ do
571+ _ <- insertData
572+ let filter = QueryFilter (TermQuery (Term "user" "bitemyapp") Nothing) False
573+ search = mkSearch Nothing (Just filter)
574+ myTweet <- searchTweet search
575+ liftIO $ myTweet `shouldBe` Right exampleTweet
576+
564577 describe "Aggregation API" $ do
565578 it "returns term aggregation results" $ withTestEnv $ do
566579 _ <- insertData