git.iko.soy/typeable/bloodhound
on master help sign in
Updated BoolQuery to use lists for must / should / should_not. Updated tests and docs to reflect this
43664a9Liam Atkinson
Database/Bloodhound/Types.hs+5−6
@@ -153,7 +153,6 @@ import Data.Monoid
153import Data.Text (Text)
153import Data.Text (Text)
154import qualified Data.Text as T
154import qualified Data.Text as T
155import Data.Time.Clock (UTCTime)
155import Data.Time.Clock (UTCTime)
156−import Data.Vector (Vector (..))
157import qualified Data.Vector as V
156import qualified Data.Vector as V
158import GHC.Generics (Generic)
157import GHC.Generics (Generic)
159import Network.HTTP.Client
158import Network.HTTP.Client
@@ -754,15 +753,15 @@ data MultiMatchQueryType =
754 | MultiMatchPhrasePrefix deriving (Eq, Show)
753 | MultiMatchPhrasePrefix deriving (Eq, Show)
755
754
756data BoolQuery =
755data BoolQuery =
757− BoolQuery { boolQueryMustMatch :: Maybe Query
756+ BoolQuery { boolQueryMustMatch :: [Query]
758− , boolQueryMustNotMatch :: Maybe Query
757+ , boolQueryMustNotMatch :: [Query]
759− , boolQueryShouldMatch :: Maybe [Query]
758+ , boolQueryShouldMatch :: [Query]
760 , boolQueryMinimumShouldMatch :: Maybe MinimumMatch
759 , boolQueryMinimumShouldMatch :: Maybe MinimumMatch
761 , boolQueryBoost :: Maybe Boost
760 , boolQueryBoost :: Maybe Boost
762 , boolQueryDisableCoord :: Maybe DisableCoord
761 , boolQueryDisableCoord :: Maybe DisableCoord
763 } deriving (Eq, Show)
762 } deriving (Eq, Show)
764
763
765−mkBoolQuery :: Maybe Query -> Maybe Query -> Maybe [Query] -> BoolQuery
764+mkBoolQuery :: [Query] -> [Query] -> [Query] -> BoolQuery
766mkBoolQuery must mustNot should =
765mkBoolQuery must mustNot should =
767 BoolQuery must mustNot should Nothing Nothing Nothing
766 BoolQuery must mustNot should Nothing Nothing Nothing
768
767
@@ -1155,7 +1154,7 @@ instance ToJSON Query where
1155omitNulls :: [(Text, Value)] -> Value
1154omitNulls :: [(Text, Value)] -> Value
1156omitNulls = object . filter notNull where
1155omitNulls = object . filter notNull where
1157 notNull (_, Null) = False
1156 notNull (_, Null) = False
1158− notNull (_, (Array a)) = V.null a
1157+ notNull (_, (Array a)) = (not . V.null) a
1159 notNull _ = True
1158 notNull _ = True
1160
1159
1161
1160
README.org+1−1
@@ -386,7 +386,7 @@ let search = mkSearch (Just query) Nothing
386let innerQuery = QueryMatchQuery $
386let innerQuery = QueryMatchQuery $
387 mkMatchQuery (FieldName "user") (QueryString "bitemyapp")
387 mkMatchQuery (FieldName "user") (QueryString "bitemyapp")
388let query = QueryBoolQuery $
388let query = QueryBoolQuery $
389− mkBoolQuery (Just innerQuery) Nothing Nothing
389+ mkBoolQuery [innerQuery] [] []
390let search = mkSearch (Just query) Nothing
390let search = mkSearch (Just query) Nothing
391
391
392#+END_SRC
392#+END_SRC
bloodhound.cabal+2−1
@@ -31,7 +31,8 @@ library
31 semigroups >= 0.15,
31 semigroups >= 0.15,
32 time >= 1.4,
32 time >= 1.4,
33 text >= 0.11,
33 text >= 0.11,
34− http-types >= 0.8
34+ http-types >= 0.8,
35+ vector >= 0.10.11
35 default-language: Haskell2010
36 default-language: Haskell2010
36
37
37test-suite tests
38test-suite tests
tests/tests.hs+17−17
@@ -1,24 +1,24 @@
1−{-# LANGUAGE DeriveGeneric #-}
1+{-# LANGUAGE DeriveGeneric #-}
2{-# LANGUAGE ScopedTypeVariables #-}
2{-# LANGUAGE ScopedTypeVariables #-}
3
3
4module Main where
4module Main where
5
5
6−import Control.Applicative
6+import Control.Applicative
7−import Database.Bloodhound
8−import Data.Aeson
7+import Data.Aeson
9−import Data.List (nub)
8+import Data.List (nub)
10−import Data.List.NonEmpty (NonEmpty(..))
9+import Data.List.NonEmpty (NonEmpty (..))
10+import Data.Text (Text)
11+import qualified Data.Text as T
11−import Data.Time.Calendar (Day(..))
12+import Data.Time.Calendar (Day (..))
12−import Data.Time.Clock (secondsToDiffTime, UTCTime(..))
13+import Data.Time.Clock (UTCTime (..), secondsToDiffTime)
13−import Data.Text (Text)
14+import Database.Bloodhound
14−import qualified Data.Text as T
15−import GHC.Generics (Generic)
15+import GHC.Generics (Generic)
16−import Network.HTTP.Client
16+import Network.HTTP.Client
17import qualified Network.HTTP.Types.Status as NHTS
17import qualified Network.HTTP.Types.Status as NHTS
18−import Prelude hiding (filter, putStrLn)
18+import Prelude hiding (filter, putStrLn)
19−import Test.Hspec
19+import Test.Hspec
20−import Test.Hspec.QuickCheck (prop)
20+import Test.Hspec.QuickCheck (prop)
21−import Test.QuickCheck
21+import Test.QuickCheck
22
22
23testServer :: Server
23testServer :: Server
24testServer = Server "http://localhost:9200"
24testServer = Server "http://localhost:9200"
@@ -203,7 +203,7 @@ main = hspec $ do
203 let innerQuery = QueryMatchQuery $
203 let innerQuery = QueryMatchQuery $
204 mkMatchQuery (FieldName "user") (QueryString "bitemyapp")
204 mkMatchQuery (FieldName "user") (QueryString "bitemyapp")
205 let query = QueryBoolQuery $
205 let query = QueryBoolQuery $
206− mkBoolQuery (Just innerQuery) Nothing Nothing
206+ mkBoolQuery [innerQuery] [] []
207 let search = mkSearch (Just query) Nothing
207 let search = mkSearch (Just query) Nothing
208 myTweet <- searchTweet search
208 myTweet <- searchTweet search
209 myTweet `shouldBe` Right exampleTweet
209 myTweet `shouldBe` Right exampleTweet