git.iko.soy/typeable/bloodhound
on master help sign in
added TermFilter
f18d499Chris Allen
Database/Bloodhound/Types.hs+1
@@ -801,6 +801,7 @@ data Filter = AndFilter [Filter] Cache
801 | PrefixFilter FieldName PrefixValue Cache
801 | PrefixFilter FieldName PrefixValue Cache
802 | RangeFilter FieldName (Either HalfRange Range) RangeExecution Cache
802 | RangeFilter FieldName (Either HalfRange Range) RangeExecution Cache
803 | RegexpFilter FieldName Regexp RegexpFlags CacheName Cache CacheKey
803 | RegexpFilter FieldName Regexp RegexpFlags CacheName Cache CacheKey
804+ | TermFilter Term Cache
804 deriving (Eq, Show)
805 deriving (Eq, Show)
805
806
806data ZeroTermsQuery = ZeroTermsNone
807data ZeroTermsQuery = ZeroTermsNone
Database/Bloodhound/Types/Instances.hs+5
@@ -41,6 +41,11 @@ instance ToJSON Filter where
41 toJSON (IdentityFilter) =
41 toJSON (IdentityFilter) =
42 object ["match_all" .= object []]
42 object ["match_all" .= object []]
43
43
44+ toJSON (TermFilter (Term termFilterField termFilterValue) cache) =
45+ object ["term" .= object base]
46+ where base = [termFilterField .= termFilterValue,
47+ "_cache" .= cache]
48+
44 toJSON (ExistsFilter (FieldName fieldName)) =
49 toJSON (ExistsFilter (FieldName fieldName)) =
45 object ["exists" .= object
50 object ["exists" .= object
46 ["field" .= fieldName]]
51 ["field" .= fieldName]]
tests/tests.hs+7
@@ -252,6 +252,13 @@ main = hspec $ do
252 myTweet <- searchTweet search
252 myTweet <- searchTweet search
253 myTweet `shouldBe` Right exampleTweet
253 myTweet `shouldBe` Right exampleTweet
254
254
255+ it "returns document for term filter" $ do
256+ _ <- insertData
257+ let termFilter = TermFilter (Term "user" "bitemyapp") False
258+ let search = mkSearch Nothing (Just termFilter)
259+ myTweet <- searchTweet search
260+ myTweet `shouldBe` Right exampleTweet
261+
255 it "returns document for existential filter" $ do
262 it "returns document for existential filter" $ do
256 _ <- insertData
263 _ <- insertData
257 let search = mkSearch Nothing (Just (ExistsFilter (FieldName "user")))
264 let search = mkSearch Nothing (Just (ExistsFilter (FieldName "user")))