git.iko.soy/typeable/bloodhound
on master help sign in
fixed RegexpQuery, added ToJSON instance
52172d0Chris Allen
Database/Bloodhound/Types.hs+5−7
@@ -351,13 +351,12 @@ newtype QueryString = QueryString Text deriving (Eq, Generic, Show)
351-}
351-}
352newtype FieldName = FieldName Text deriving (Eq, Show)
352newtype FieldName = FieldName Text deriving (Eq, Show)
353
353
354−{-| 'CacheName' is used in 'RegexpQuery' and 'RegexpFilter' for describing the
354+{-| 'CacheName' is used in 'RegexpFilter' for describing the
355 'CacheKey' keyed caching behavior.
355 'CacheKey' keyed caching behavior.
356-}
356-}
357newtype CacheName = CacheName Text deriving (Eq, Show)
357newtype CacheName = CacheName Text deriving (Eq, Show)
358
358
359−{-| 'CacheKey' is used in 'RegexpQuery' and 'RegexpFilter' to key regex
359+{-| 'CacheKey' is used in 'RegexpFilter' to key regex caching.
360− caching behavior.
361-}
360-}
362newtype CacheKey =
361newtype CacheKey =
363 CacheKey Text deriving (Eq, Show)
362 CacheKey Text deriving (Eq, Show)
@@ -468,7 +467,7 @@ data Search = Search { queryBody :: Maybe Query
468 , size :: Size } deriving (Eq, Show)
467 , size :: Size } deriving (Eq, Show)
469
468
470data Query =
469data Query =
471− TermQuery Term (Maybe Boost)
470+ TermQuery Term (Maybe Boost)
472 | TermsQuery [Term] MinimumMatch
471 | TermsQuery [Term] MinimumMatch
473 | QueryMatchQuery MatchQuery
472 | QueryMatchQuery MatchQuery
474 | QueryMultiMatchQuery MultiMatchQuery
473 | QueryMultiMatchQuery MultiMatchQuery
@@ -501,9 +500,8 @@ data RegexpQuery =
501 RegexpQuery { regexpQueryField :: FieldName
500 RegexpQuery { regexpQueryField :: FieldName
502 , regexpQuery :: Regexp
501 , regexpQuery :: Regexp
503 , regexpQueryFlags :: RegexpFlags
502 , regexpQueryFlags :: RegexpFlags
504− , regexpQueryCacheName :: CacheName
503+ , regexpQueryBoost :: Maybe Boost
505− , regexpQueryCache :: Cache
506− , regexpQueryCacheKey :: CacheKey } deriving (Eq, Show)
504+ } deriving (Eq, Show)
507
505
508data RangeQuery =
506data RangeQuery =
509 RangeQuery { rangeQueryField :: FieldName
507 RangeQuery { rangeQueryField :: FieldName
Database/Bloodhound/Types/Instances.hs+16−3
@@ -144,8 +144,8 @@ instance ToJSON Query where
144 where conjoined = [ "type" .= toJSON idsQueryMappingName
144 where conjoined = [ "type" .= toJSON idsQueryMappingName
145 , "values" .= fmap toJSON docIds ]
145 , "values" .= fmap toJSON docIds ]
146
146
147− toJSON (QueryQueryStringQuery queryStringQuery) =
147+ toJSON (QueryQueryStringQuery qQueryStringQuery) =
148− object [ "query_string" .= toJSON queryStringQuery ]
148+ object [ "query_string" .= toJSON qQueryStringQuery ]
149
149
150 toJSON (QueryMatchQuery matchQuery) =
150 toJSON (QueryMatchQuery matchQuery) =
151 object [ "match" .= toJSON matchQuery ]
151 object [ "match" .= toJSON matchQuery ]
@@ -211,11 +211,24 @@ instance ToJSON Query where
211 object [ "prefix" .= toJSON query ]
211 object [ "prefix" .= toJSON query ]
212
212
213 toJSON (QueryRangeQuery query) =
213 toJSON (QueryRangeQuery query) =
214− object [ "range" .= toJSON query ]
214+ object [ "range" .= toJSON query ]
215+
216+ toJSON (QueryRegexpQuery query) =
217+ object [ "regexp" .= toJSON query ]
215
218
216mField :: (ToJSON a, Functor f) => T.Text -> f a -> f (T.Text, Value)
219mField :: (ToJSON a, Functor f) => T.Text -> f a -> f (T.Text, Value)
217mField field = fmap ((field .=) . toJSON)
220mField field = fmap ((field .=) . toJSON)
218
221
222+instance ToJSON RegexpQuery where
223+ toJSON (RegexpQuery (FieldName rqQueryField)
224+ (Regexp regexpQueryQuery) rqQueryFlags
225+ rqQueryBoost) =
226+ object [ rqQueryField .= object conjoined ]
227+ where base = [ "value" .= regexpQueryQuery
228+ , "flags" .= toJSON rqQueryFlags ]
229+ maybeAdd = catMaybes [ mField "boost" rqQueryBoost ]
230+ conjoined = base ++ maybeAdd
231+
219instance ToJSON QueryStringQuery where
232instance ToJSON QueryStringQuery where
220 toJSON (QueryStringQuery qsQueryString
233 toJSON (QueryStringQuery qsQueryString
221 qsDefaultField qsOperator
234 qsDefaultField qsOperator
bloodhound.cabal+1−1
@@ -17,7 +17,7 @@ source-repository head
17 location: https://github.com/bitemyapp/bloodhound.git
17 location: https://github.com/bitemyapp/bloodhound.git
18
18
19library
19library
20− ghc-options: -Wall -fno-warn-unused-binds -fno-warn-orphans
20+ ghc-options: -Wall -fno-warn-orphans
21 default-extensions: OverloadedStrings
21 default-extensions: OverloadedStrings
22 exposed-modules: Database.Bloodhound
22 exposed-modules: Database.Bloodhound
23 Database.Bloodhound.Client
23 Database.Bloodhound.Client