git.iko.soy/typeable/bloodhound
on master help sign in
Merge pull request #43 from bnordbo/master
0445b82Chris Allen
src/Database/Bloodhound/Types.hs+8
@@ -1063,6 +1063,7 @@ data Filter = AndFilter [Filter] Cache
1063 | LimitFilter Int
1063 | LimitFilter Int
1064 | MissingFilter FieldName Existence NullValue
1064 | MissingFilter FieldName Existence NullValue
1065 | PrefixFilter FieldName PrefixValue Cache
1065 | PrefixFilter FieldName PrefixValue Cache
1066+ | QueryFilter Query Cache
1066 | RangeFilter FieldName RangeValue RangeExecution Cache
1067 | RangeFilter FieldName RangeValue RangeExecution Cache
1067 | RegexpFilter FieldName Regexp RegexpFlags CacheName Cache CacheKey
1068 | RegexpFilter FieldName Regexp RegexpFlags CacheName Cache CacheKey
1068 | TermFilter Term Cache
1069 | TermFilter Term Cache
@@ -1505,6 +1506,13 @@ instance ToJSON Filter where
1505 object [fieldName .= fieldValue
1506 object [fieldName .= fieldValue
1506 , "_cache" .= cache]]
1507 , "_cache" .= cache]]
1507
1508
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+
1508 toJSON (RangeFilter (FieldName fieldName) rangeValue rangeExecution cache) =
1516 toJSON (RangeFilter (FieldName fieldName) rangeValue rangeExecution cache) =
1509 object ["range" .=
1517 object ["range" .=
1510 object [ fieldName .= object (rangeValueToPair rangeValue)
1518 object [ fieldName .= object (rangeValueToPair rangeValue)
tests/tests.hs+14−1
@@ -543,7 +543,6 @@ main = hspec $ do
543 liftIO $
543 liftIO $
544 myTweet `shouldBe` Right exampleTweet
544 myTweet `shouldBe` Right exampleTweet
545
545
546−
547 it "returns document for regexp filter" $ withTestEnv $ do
546 it "returns document for regexp filter" $ withTestEnv $ do
548 _ <- insertData
547 _ <- insertData
549 let filter = RegexpFilter (FieldName "user") (Regexp "bite.*app")
548 let filter = RegexpFilter (FieldName "user") (Regexp "bite.*app")
@@ -561,6 +560,20 @@ main = hspec $ do
561 let search = mkSearch Nothing (Just filter)
560 let search = mkSearch Nothing (Just filter)
562 searchExpectNoResults search
561 searchExpectNoResults search
563
562
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+
564 describe "Aggregation API" $ do
577 describe "Aggregation API" $ do
565 it "returns term aggregation results" $ withTestEnv $ do
578 it "returns term aggregation results" $ withTestEnv $ do
566 _ <- insertData
579 _ <- insertData