git.iko.soy/typeable/bloodhound
on master help sign in
fixed RegexpQuery, added ToJSON instance
commit52172d030d57d8bf19103eb27bad2afd9ae51eee authorChris Allen <cma@bitemyapp.com> dateSun 8 Jun 2014, 02:14 (12 years ago) parent2409148
3 files changed+22−11
Database/Bloodhound/Types.hs+5−7 Database/Bloodhound/Types/Instances.hs+16−3 bloodhound.cabal+1−1
Database/Bloodhound/Types.hs+5−7
@@ -351,13 +351,12 @@ newtype QueryString = QueryString Text deriving (Eq, Generic, Show)
351351-}
352352newtype FieldName = FieldName Text deriving (Eq, Show)
353353
354−{-| 'CacheName' is used in 'RegexpQuery' and 'RegexpFilter' for describing the
354+{-| 'CacheName' is used in 'RegexpFilter' for describing the
355355 'CacheKey' keyed caching behavior.
356356-}
357357newtype CacheName = CacheName Text deriving (Eq, Show)
358358
359−{-| 'CacheKey' is used in 'RegexpQuery' and 'RegexpFilter' to key regex
360− caching behavior.
359+{-| 'CacheKey' is used in 'RegexpFilter' to key regex caching.
361360-}
362361newtype CacheKey =
363362 CacheKey Text deriving (Eq, Show)
@@ -468,7 +467,7 @@ data Search = Search { queryBody :: Maybe Query
468467 , size :: Size } deriving (Eq, Show)
469468
470469data Query =
471− TermQuery Term (Maybe Boost)
470+ TermQuery Term (Maybe Boost)
472471 | TermsQuery [Term] MinimumMatch
473472 | QueryMatchQuery MatchQuery
474473 | QueryMultiMatchQuery MultiMatchQuery
@@ -501,9 +500,8 @@ data RegexpQuery =
501500 RegexpQuery { regexpQueryField :: FieldName
502501 , regexpQuery :: Regexp
503502 , regexpQueryFlags :: RegexpFlags
504− , regexpQueryCacheName :: CacheName
505− , regexpQueryCache :: Cache
506− , regexpQueryCacheKey :: CacheKey } deriving (Eq, Show)
503+ , regexpQueryBoost :: Maybe Boost
504+ } deriving (Eq, Show)
507505
508506data RangeQuery =
509507 RangeQuery { rangeQueryField :: FieldName
Database/Bloodhound/Types/Instances.hs+16−3
@@ -144,8 +144,8 @@ instance ToJSON Query where
144144 where conjoined = [ "type" .= toJSON idsQueryMappingName
145145 , "values" .= fmap toJSON docIds ]
146146
147− toJSON (QueryQueryStringQuery queryStringQuery) =
148− object [ "query_string" .= toJSON queryStringQuery ]
147+ toJSON (QueryQueryStringQuery qQueryStringQuery) =
148+ object [ "query_string" .= toJSON qQueryStringQuery ]
149149
150150 toJSON (QueryMatchQuery matchQuery) =
151151 object [ "match" .= toJSON matchQuery ]
@@ -211,11 +211,24 @@ instance ToJSON Query where
211211 object [ "prefix" .= toJSON query ]
212212
213213 toJSON (QueryRangeQuery query) =
214− object [ "range" .= toJSON query ]
214+ object [ "range" .= toJSON query ]
215+
216+ toJSON (QueryRegexpQuery query) =
217+ object [ "regexp" .= toJSON query ]
215218
216219mField :: (ToJSON a, Functor f) => T.Text -> f a -> f (T.Text, Value)
217220mField field = fmap ((field .=) . toJSON)
218221
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+
219232instance ToJSON QueryStringQuery where
220233 toJSON (QueryStringQuery qsQueryString
221234 qsDefaultField qsOperator
bloodhound.cabal+1−1
@@ -17,7 +17,7 @@ source-repository head
1717 location: https://github.com/bitemyapp/bloodhound.git
1818
1919library
20− ghc-options: -Wall -fno-warn-unused-binds -fno-warn-orphans
20+ ghc-options: -Wall -fno-warn-orphans
2121 default-extensions: OverloadedStrings
2222 exposed-modules: Database.Bloodhound
2323 Database.Bloodhound.Client