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
commit43664a9ce501304f113a6f3fa329d8993acc1ffe authorLiam Atkinson <liamatkinson@gmail.com> dateThu 9 Oct 2014, 22:38 (12 years ago) parentc9e8dd3
4 files changed+25−25
Database/Bloodhound/Types.hs+5−6 README.org+1−1 bloodhound.cabal+2−1 tests/tests.hs+17−17
Database/Bloodhound/Types.hs+5−6
@@ -153,7 +153,6 @@ import Data.Monoid
153153import Data.Text (Text)
154154import qualified Data.Text as T
155155import Data.Time.Clock (UTCTime)
156−import Data.Vector (Vector (..))
157156import qualified Data.Vector as V
158157import GHC.Generics (Generic)
159158import Network.HTTP.Client
@@ -754,15 +753,15 @@ data MultiMatchQueryType =
754753 | MultiMatchPhrasePrefix deriving (Eq, Show)
755754
756755data BoolQuery =
757− BoolQuery { boolQueryMustMatch :: Maybe Query
758− , boolQueryMustNotMatch :: Maybe Query
759− , boolQueryShouldMatch :: Maybe [Query]
756+ BoolQuery { boolQueryMustMatch :: [Query]
757+ , boolQueryMustNotMatch :: [Query]
758+ , boolQueryShouldMatch :: [Query]
760759 , boolQueryMinimumShouldMatch :: Maybe MinimumMatch
761760 , boolQueryBoost :: Maybe Boost
762761 , boolQueryDisableCoord :: Maybe DisableCoord
763762 } deriving (Eq, Show)
764763
765−mkBoolQuery :: Maybe Query -> Maybe Query -> Maybe [Query] -> BoolQuery
764+mkBoolQuery :: [Query] -> [Query] -> [Query] -> BoolQuery
766765mkBoolQuery must mustNot should =
767766 BoolQuery must mustNot should Nothing Nothing Nothing
768767
@@ -1155,7 +1154,7 @@ instance ToJSON Query where
11551154omitNulls :: [(Text, Value)] -> Value
11561155omitNulls = object . filter notNull where
11571156 notNull (_, Null) = False
1158− notNull (_, (Array a)) = V.null a
1157+ notNull (_, (Array a)) = (not . V.null) a
11591158 notNull _ = True
11601159
11611160
README.org+1−1
@@ -386,7 +386,7 @@ let search = mkSearch (Just query) Nothing
386386let innerQuery = QueryMatchQuery $
387387 mkMatchQuery (FieldName "user") (QueryString "bitemyapp")
388388let query = QueryBoolQuery $
389− mkBoolQuery (Just innerQuery) Nothing Nothing
389+ mkBoolQuery [innerQuery] [] []
390390let search = mkSearch (Just query) Nothing
391391
392392#+END_SRC
bloodhound.cabal+2−1
@@ -31,7 +31,8 @@ library
3131 semigroups >= 0.15,
3232 time >= 1.4,
3333 text >= 0.11,
34− http-types >= 0.8
34+ http-types >= 0.8,
35+ vector >= 0.10.11
3536 default-language: Haskell2010
3637
3738test-suite tests
tests/tests.hs+17−17
@@ -1,24 +1,24 @@
1−{-# LANGUAGE DeriveGeneric #-}
1+{-# LANGUAGE DeriveGeneric #-}
22{-# LANGUAGE ScopedTypeVariables #-}
33
44module Main where
55
6−import Control.Applicative
7−import Database.Bloodhound
8−import Data.Aeson
9−import Data.List (nub)
10−import Data.List.NonEmpty (NonEmpty(..))
11−import Data.Time.Calendar (Day(..))
12−import Data.Time.Clock (secondsToDiffTime, UTCTime(..))
13−import Data.Text (Text)
14−import qualified Data.Text as T
15−import GHC.Generics (Generic)
16−import Network.HTTP.Client
6+import Control.Applicative
7+import Data.Aeson
8+import Data.List (nub)
9+import Data.List.NonEmpty (NonEmpty (..))
10+import Data.Text (Text)
11+import qualified Data.Text as T
12+import Data.Time.Calendar (Day (..))
13+import Data.Time.Clock (UTCTime (..), secondsToDiffTime)
14+import Database.Bloodhound
15+import GHC.Generics (Generic)
16+import Network.HTTP.Client
1717import qualified Network.HTTP.Types.Status as NHTS
18−import Prelude hiding (filter, putStrLn)
19−import Test.Hspec
20−import Test.Hspec.QuickCheck (prop)
21−import Test.QuickCheck
18+import Prelude hiding (filter, putStrLn)
19+import Test.Hspec
20+import Test.Hspec.QuickCheck (prop)
21+import Test.QuickCheck
2222
2323testServer :: Server
2424testServer = Server "http://localhost:9200"
@@ -203,7 +203,7 @@ main = hspec $ do
203203 let innerQuery = QueryMatchQuery $
204204 mkMatchQuery (FieldName "user") (QueryString "bitemyapp")
205205 let query = QueryBoolQuery $
206− mkBoolQuery (Just innerQuery) Nothing Nothing
206+ mkBoolQuery [innerQuery] [] []
207207 let search = mkSearch (Just query) Nothing
208208 myTweet <- searchTweet search
209209 myTweet `shouldBe` Right exampleTweet