git.iko.soy/typeable/bloodhound
on master help sign in
add V1 support, fix tests
commit1454d6933e85ace1c657ab316c33243781f7eeb0 authorJosh Berman <berman.josh@gmail.com> dateSun 24 Dec 2017, 12:58 (9 years ago) parent7f00743
6 files changed+85−5
bloodhound.cabal+1−1 src/Database/V1/Bloodhound/Types.hs+72−1 src/Database/V5/Bloodhound/Types.hs+1−1 stack-8.0.yaml+2−2 stack-8.2.yaml+3 tests/V1/tests.hs+6
bloodhound.cabal+1−1
@@ -1,5 +1,5 @@
11name: bloodhound
2−version: 0.15.1.0
2+version: 0.16.0.0
33synopsis: ElasticSearch client library for Haskell
44description: ElasticSearch made awesome for Haskell hackers
55homepage: https://github.com/bitemyapp/bloodhound
src/Database/V1/Bloodhound/Types.hs+72−1
@@ -333,6 +333,9 @@ module Database.V1.Bloodhound.Types
333333 , SuggestOptions(..)
334334 , SuggestResponse(..)
335335 , NamedSuggestionResponse(..)
336+ , DirectGenerators(..)
337+ , mkDirectGenerators
338+ , DirectGeneratorSuggestModeTypes (..)
336339
337340 , Aggregation(..)
338341 , Aggregations
@@ -5382,6 +5385,7 @@ data PhraseSuggester =
53825385 , phraseSuggesterShardSize :: Maybe Int
53835386 , phraseSuggesterHighlight :: Maybe PhraseSuggesterHighlighter
53845387 , phraseSuggesterCollate :: Maybe PhraseSuggesterCollate
5388+ , phraseSuggesterCandidateGenerators :: [DirectGenerators]
53855389 }
53865390 deriving (Show, Generic, Eq, Read, Typeable)
53875391
@@ -5397,6 +5401,7 @@ instance ToJSON PhraseSuggester where
53975401 , "shard_size" .= phraseSuggesterShardSize
53985402 , "highlight" .= phraseSuggesterHighlight
53995403 , "collate" .= phraseSuggesterCollate
5404+ , "direct_generator" .= phraseSuggesterCandidateGenerators
54005405 ]
54015406
54025407instance FromJSON PhraseSuggester where
@@ -5413,11 +5418,12 @@ instance FromJSON PhraseSuggester where
54135418 <*> o .:? "shard_size"
54145419 <*> o .:? "highlight"
54155420 <*> o .:? "collate"
5421+ <*> o .:? "direct_generator" .!= []
54165422
54175423mkPhraseSuggester :: FieldName -> PhraseSuggester
54185424mkPhraseSuggester fName =
54195425 PhraseSuggester fName Nothing Nothing Nothing Nothing Nothing Nothing
5420− Nothing Nothing Nothing Nothing
5426+ Nothing Nothing Nothing Nothing []
54215427
54225428data PhraseSuggesterHighlighter =
54235429 PhraseSuggesterHighlighter { phraseSuggesterHighlighterPreTag :: Text
@@ -5507,3 +5513,68 @@ instance FromJSON NamedSuggestionResponse where
55075513 return $ NamedSuggestionResponse suggestionName' suggestionResponses'
55085514
55095515 parseJSON x = typeMismatch "NamedSuggestionResponse" x
5516+
5517+data DirectGeneratorSuggestModeTypes = DirectGeneratorSuggestModeMissing
5518+ | DirectGeneratorSuggestModePopular
5519+ | DirectGeneratorSuggestModeAlways
5520+ deriving (Show, Eq, Read, Generic)
5521+
5522+instance ToJSON DirectGeneratorSuggestModeTypes where
5523+ toJSON DirectGeneratorSuggestModeMissing = "missing"
5524+ toJSON DirectGeneratorSuggestModePopular = "popular"
5525+ toJSON DirectGeneratorSuggestModeAlways = "always"
5526+
5527+instance FromJSON DirectGeneratorSuggestModeTypes where
5528+ parseJSON = withText "DirectGeneratorSuggestModeTypes" parse
5529+ where parse "missing" = pure DirectGeneratorSuggestModeMissing
5530+ parse "popular" = pure DirectGeneratorSuggestModePopular
5531+ parse "always" = pure DirectGeneratorSuggestModeAlways
5532+ parse f = fail ("Unexpected DirectGeneratorSuggestModeTypes: " <> show f)
5533+
5534+data DirectGenerators = DirectGenerators
5535+ { directGeneratorsField :: FieldName
5536+ , directGeneratorsSize :: Maybe Int
5537+ , directGeneratorSuggestMode :: DirectGeneratorSuggestModeTypes
5538+ , directGeneratorMaxEdits :: Maybe Double
5539+ , directGeneratorPrefixLength :: Maybe Int
5540+ , directGeneratorMinWordLength :: Maybe Int
5541+ , directGeneratorMaxInspections :: Maybe Int
5542+ , directGeneratorMinDocFreq :: Maybe Double
5543+ , directGeneratorMaxTermFreq :: Maybe Double
5544+ , directGeneratorPreFilter :: Maybe Text
5545+ , directGeneratorPostFilter :: Maybe Text
5546+ }
5547+ deriving (Show, Eq, Read, Generic)
5548+
5549+
5550+instance ToJSON DirectGenerators where
5551+ toJSON DirectGenerators{..} = omitNulls [ "field" .= directGeneratorsField
5552+ , "size" .= directGeneratorsSize
5553+ , "suggest_mode" .= directGeneratorSuggestMode
5554+ , "max_edits" .= directGeneratorMaxEdits
5555+ , "prefix_length" .= directGeneratorPrefixLength
5556+ , "min_word_length" .= directGeneratorMinWordLength
5557+ , "max_inspections" .= directGeneratorMaxInspections
5558+ , "min_doc_freq" .= directGeneratorMinDocFreq
5559+ , "max_term_freq" .= directGeneratorMaxTermFreq
5560+ , "pre_filter" .= directGeneratorPreFilter
5561+ , "post_filter" .= directGeneratorPostFilter
5562+ ]
5563+
5564+instance FromJSON DirectGenerators where
5565+ parseJSON = withObject "DirectGenerators" parse
5566+ where parse o = DirectGenerators
5567+ <$> o .: "field"
5568+ <*> o .:? "size"
5569+ <*> o .: "suggest_mode"
5570+ <*> o .:? "max_edits"
5571+ <*> o .:? "prefix_length"
5572+ <*> o .:? "min_word_length"
5573+ <*> o .:? "max_inspections"
5574+ <*> o .:? "min_doc_freq"
5575+ <*> o .:? "max_term_freq"
5576+ <*> o .:? "pre_filter"
5577+ <*> o .:? "post_filter"
5578+
5579+mkDirectGenerators :: FieldName -> DirectGenerators
5580+mkDirectGenerators fn = DirectGenerators fn Nothing DirectGeneratorSuggestModeMissing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing
src/Database/V5/Bloodhound/Types.hs+1−1
@@ -5429,7 +5429,7 @@ data DirectGeneratorSuggestModeTypes = DirectGeneratorSuggestModeMissing
54295429 | DirectGeneratorSuggestModePopular
54305430 | DirectGeneratorSuggestModeAlways
54315431 deriving (Show, Eq, Read, Generic)
5432−
5432+
54335433instance ToJSON DirectGeneratorSuggestModeTypes where
54345434 toJSON DirectGeneratorSuggestModeMissing = "missing"
54355435 toJSON DirectGeneratorSuggestModePopular = "popular"
stack-8.0.yaml+2−2
@@ -5,13 +5,13 @@ flags:
55packages:
66- '.'
77- './examples'
8−# extra-deps:
8+extra-deps:
99# - http-client-0.5.0
1010# - aeson-1.2.0.0
1111# - fail-4.9.0.0
1212# - http-types-0.9
1313# - attoparsec-0.13.0.1
14−# - quickcheck-properties-0.1
14+- quickcheck-properties-0.1
1515# - semigroups-0.18.3
1616# - uri-bytestring-0.1.9
1717# - temporary-resourcet-0.1.0.0
stack-8.2.yaml+3
@@ -6,4 +6,7 @@ packages:
66 - '.'
77 - './examples'
88
9+extra-deps:
10+- quickcheck-properties-0.1
11+
912resolver: lts-10.0
tests/V1/tests.hs+6
@@ -607,6 +607,8 @@ instance ApproxEq PhraseSuggesterCollate
607607instance ApproxEq PhraseSuggester
608608instance ApproxEq SuggestType
609609instance ApproxEq Suggest
610+instance ApproxEq DirectGenerators
611+instance ApproxEq DirectGeneratorSuggestModeTypes
610612
611613-- | Due to the way nodeattrfilters get serialized here, they may come
612614-- out in a different order, but they are morally equivalent
@@ -937,6 +939,8 @@ instance Arbitrary Size where arbitrary = sopArbitrary; shrink = genericShrink
937939instance Arbitrary PhraseSuggester where arbitrary = sopArbitrary; shrink = genericShrink
938940instance Arbitrary SuggestType where arbitrary = sopArbitrary; shrink = genericShrink
939941instance Arbitrary Suggest where arbitrary = sopArbitrary; shrink = genericShrink
942+instance Arbitrary DirectGenerators where arbitrary = sopArbitrary; shrink = genericShrink
943+instance Arbitrary DirectGeneratorSuggestModeTypes where arbitrary = sopArbitrary; shrink = genericShrink
940944
941945newtype UpdatableIndexSetting' = UpdatableIndexSetting' UpdatableIndexSetting
942946 deriving (Show, Eq, ToJSON, FromJSON, ApproxEq, Typeable)
@@ -1933,6 +1937,8 @@ main = hspec $ do
19331937 propJSON (Proxy :: Proxy CompoundFormat)
19341938 propJSON (Proxy :: Proxy TemplateQueryInline)
19351939 propJSON (Proxy :: Proxy Suggest)
1940+ propJSON (Proxy :: Proxy DirectGenerators)
1941+ propJSON (Proxy :: Proxy DirectGeneratorSuggestModeTypes)
19361942
19371943-- Temporary solution for lacking of generic derivation of Arbitrary
19381944-- We use generics-sop, as it's much more concise than directly using GHC.Generics