git.iko.soy/typeable/bloodhound
on master help sign in
Merge pull request #218 from bermanjosh/directGenerators
be83a91Chris Allen
bloodhound.cabal+1−1
@@ -1,5 +1,5 @@
1name: bloodhound
1name: bloodhound
2−version: 0.15.0.2
2+version: 0.16.0.0
3synopsis: ElasticSearch client library for Haskell
3synopsis: ElasticSearch client library for Haskell
4description: ElasticSearch made awesome for Haskell hackers
4description: ElasticSearch made awesome for Haskell hackers
5homepage: https://github.com/bitemyapp/bloodhound
5homepage: https://github.com/bitemyapp/bloodhound
src/Database/V1/Bloodhound/Types.hs+72−1
@@ -333,6 +333,9 @@ module Database.V1.Bloodhound.Types
333 , SuggestOptions(..)
333 , SuggestOptions(..)
334 , SuggestResponse(..)
334 , SuggestResponse(..)
335 , NamedSuggestionResponse(..)
335 , NamedSuggestionResponse(..)
336+ , DirectGenerators(..)
337+ , mkDirectGenerators
338+ , DirectGeneratorSuggestModeTypes (..)
336
339
337 , Aggregation(..)
340 , Aggregation(..)
338 , Aggregations
341 , Aggregations
@@ -5382,6 +5385,7 @@ data PhraseSuggester =
5382 , phraseSuggesterShardSize :: Maybe Int
5385 , phraseSuggesterShardSize :: Maybe Int
5383 , phraseSuggesterHighlight :: Maybe PhraseSuggesterHighlighter
5386 , phraseSuggesterHighlight :: Maybe PhraseSuggesterHighlighter
5384 , phraseSuggesterCollate :: Maybe PhraseSuggesterCollate
5387 , phraseSuggesterCollate :: Maybe PhraseSuggesterCollate
5388+ , phraseSuggesterCandidateGenerators :: [DirectGenerators]
5385 }
5389 }
5386 deriving (Show, Generic, Eq, Read, Typeable)
5390 deriving (Show, Generic, Eq, Read, Typeable)
5387
5391
@@ -5397,6 +5401,7 @@ instance ToJSON PhraseSuggester where
5397 , "shard_size" .= phraseSuggesterShardSize
5401 , "shard_size" .= phraseSuggesterShardSize
5398 , "highlight" .= phraseSuggesterHighlight
5402 , "highlight" .= phraseSuggesterHighlight
5399 , "collate" .= phraseSuggesterCollate
5403 , "collate" .= phraseSuggesterCollate
5404+ , "direct_generator" .= phraseSuggesterCandidateGenerators
5400 ]
5405 ]
5401
5406
5402instance FromJSON PhraseSuggester where
5407instance FromJSON PhraseSuggester where
@@ -5413,11 +5418,12 @@ instance FromJSON PhraseSuggester where
5413 <*> o .:? "shard_size"
5418 <*> o .:? "shard_size"
5414 <*> o .:? "highlight"
5419 <*> o .:? "highlight"
5415 <*> o .:? "collate"
5420 <*> o .:? "collate"
5421+ <*> o .:? "direct_generator" .!= []
5416
5422
5417mkPhraseSuggester :: FieldName -> PhraseSuggester
5423mkPhraseSuggester :: FieldName -> PhraseSuggester
5418mkPhraseSuggester fName =
5424mkPhraseSuggester fName =
5419 PhraseSuggester fName Nothing Nothing Nothing Nothing Nothing Nothing
5425 PhraseSuggester fName Nothing Nothing Nothing Nothing Nothing Nothing
5420− Nothing Nothing Nothing Nothing
5426+ Nothing Nothing Nothing Nothing []
5421
5427
5422data PhraseSuggesterHighlighter =
5428data PhraseSuggesterHighlighter =
5423 PhraseSuggesterHighlighter { phraseSuggesterHighlighterPreTag :: Text
5429 PhraseSuggesterHighlighter { phraseSuggesterHighlighterPreTag :: Text
@@ -5507,3 +5513,68 @@ instance FromJSON NamedSuggestionResponse where
5507 return $ NamedSuggestionResponse suggestionName' suggestionResponses'
5513 return $ NamedSuggestionResponse suggestionName' suggestionResponses'
5508
5514
5509 parseJSON x = typeMismatch "NamedSuggestionResponse" x
5515 parseJSON x = typeMismatch "NamedSuggestionResponse" x
5516+
5517+data DirectGeneratorSuggestModeTypes = DirectGeneratorSuggestModeMissing
5518+ | DirectGeneratorSuggestModePopular
5519+ | DirectGeneratorSuggestModeAlways
5520+ deriving (Show, Eq, Read, Generic, Typeable)
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, Typeable)
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+72−1
@@ -336,6 +336,9 @@ module Database.V5.Bloodhound.Types
336 , SuggestOptions(..)
336 , SuggestOptions(..)
337 , SuggestResponse(..)
337 , SuggestResponse(..)
338 , NamedSuggestionResponse(..)
338 , NamedSuggestionResponse(..)
339+ , DirectGenerators(..)
340+ , mkDirectGenerators
341+ , DirectGeneratorSuggestModeTypes (..)
339
342
340 , Aggregation(..)
343 , Aggregation(..)
341 , Aggregations
344 , Aggregations
@@ -5293,6 +5296,7 @@ data PhraseSuggester =
5293 , phraseSuggesterShardSize :: Maybe Int
5296 , phraseSuggesterShardSize :: Maybe Int
5294 , phraseSuggesterHighlight :: Maybe PhraseSuggesterHighlighter
5297 , phraseSuggesterHighlight :: Maybe PhraseSuggesterHighlighter
5295 , phraseSuggesterCollate :: Maybe PhraseSuggesterCollate
5298 , phraseSuggesterCollate :: Maybe PhraseSuggesterCollate
5299+ , phraseSuggesterCandidateGenerators :: [DirectGenerators]
5296 }
5300 }
5297 deriving (Show, Generic, Eq, Read)
5301 deriving (Show, Generic, Eq, Read)
5298
5302
@@ -5308,6 +5312,7 @@ instance ToJSON PhraseSuggester where
5308 , "shard_size" .= phraseSuggesterShardSize
5312 , "shard_size" .= phraseSuggesterShardSize
5309 , "highlight" .= phraseSuggesterHighlight
5313 , "highlight" .= phraseSuggesterHighlight
5310 , "collate" .= phraseSuggesterCollate
5314 , "collate" .= phraseSuggesterCollate
5315+ , "direct_generator" .= phraseSuggesterCandidateGenerators
5311 ]
5316 ]
5312
5317
5313instance FromJSON PhraseSuggester where
5318instance FromJSON PhraseSuggester where
@@ -5324,11 +5329,12 @@ instance FromJSON PhraseSuggester where
5324 <*> o .:? "shard_size"
5329 <*> o .:? "shard_size"
5325 <*> o .:? "highlight"
5330 <*> o .:? "highlight"
5326 <*> o .:? "collate"
5331 <*> o .:? "collate"
5332+ <*> o .:? "direct_generator" .!= []
5327
5333
5328mkPhraseSuggester :: FieldName -> PhraseSuggester
5334mkPhraseSuggester :: FieldName -> PhraseSuggester
5329mkPhraseSuggester fName =
5335mkPhraseSuggester fName =
5330 PhraseSuggester fName Nothing Nothing Nothing Nothing Nothing Nothing
5336 PhraseSuggester fName Nothing Nothing Nothing Nothing Nothing Nothing
5331− Nothing Nothing Nothing Nothing
5337+ Nothing Nothing Nothing Nothing []
5332
5338
5333data PhraseSuggesterHighlighter =
5339data PhraseSuggesterHighlighter =
5334 PhraseSuggesterHighlighter { phraseSuggesterHighlighterPreTag :: Text
5340 PhraseSuggesterHighlighter { phraseSuggesterHighlighterPreTag :: Text
@@ -5418,3 +5424,68 @@ instance FromJSON NamedSuggestionResponse where
5418 return $ NamedSuggestionResponse suggestionName' suggestionResponses'
5424 return $ NamedSuggestionResponse suggestionName' suggestionResponses'
5419
5425
5420 parseJSON x = typeMismatch "NamedSuggestionResponse" x
5426 parseJSON x = typeMismatch "NamedSuggestionResponse" x
5427+
5428+data DirectGeneratorSuggestModeTypes = DirectGeneratorSuggestModeMissing
5429+ | DirectGeneratorSuggestModePopular
5430+ | DirectGeneratorSuggestModeAlways
5431+ deriving (Show, Eq, Read, Generic)
5432+
5433+instance ToJSON DirectGeneratorSuggestModeTypes where
5434+ toJSON DirectGeneratorSuggestModeMissing = "missing"
5435+ toJSON DirectGeneratorSuggestModePopular = "popular"
5436+ toJSON DirectGeneratorSuggestModeAlways = "always"
5437+
5438+instance FromJSON DirectGeneratorSuggestModeTypes where
5439+ parseJSON = withText "DirectGeneratorSuggestModeTypes" parse
5440+ where parse "missing" = pure DirectGeneratorSuggestModeMissing
5441+ parse "popular" = pure DirectGeneratorSuggestModePopular
5442+ parse "always" = pure DirectGeneratorSuggestModeAlways
5443+ parse f = fail ("Unexpected DirectGeneratorSuggestModeTypes: " <> show f)
5444+
5445+data DirectGenerators = DirectGenerators
5446+ { directGeneratorsField :: FieldName
5447+ , directGeneratorsSize :: Maybe Int
5448+ , directGeneratorSuggestMode :: DirectGeneratorSuggestModeTypes
5449+ , directGeneratorMaxEdits :: Maybe Double
5450+ , directGeneratorPrefixLength :: Maybe Int
5451+ , directGeneratorMinWordLength :: Maybe Int
5452+ , directGeneratorMaxInspections :: Maybe Int
5453+ , directGeneratorMinDocFreq :: Maybe Double
5454+ , directGeneratorMaxTermFreq :: Maybe Double
5455+ , directGeneratorPreFilter :: Maybe Text
5456+ , directGeneratorPostFilter :: Maybe Text
5457+ }
5458+ deriving (Show, Eq, Read, Generic)
5459+
5460+
5461+instance ToJSON DirectGenerators where
5462+ toJSON DirectGenerators{..} = omitNulls [ "field" .= directGeneratorsField
5463+ , "size" .= directGeneratorsSize
5464+ , "suggest_mode" .= directGeneratorSuggestMode
5465+ , "max_edits" .= directGeneratorMaxEdits
5466+ , "prefix_length" .= directGeneratorPrefixLength
5467+ , "min_word_length" .= directGeneratorMinWordLength
5468+ , "max_inspections" .= directGeneratorMaxInspections
5469+ , "min_doc_freq" .= directGeneratorMinDocFreq
5470+ , "max_term_freq" .= directGeneratorMaxTermFreq
5471+ , "pre_filter" .= directGeneratorPreFilter
5472+ , "post_filter" .= directGeneratorPostFilter
5473+ ]
5474+
5475+instance FromJSON DirectGenerators where
5476+ parseJSON = withObject "DirectGenerators" parse
5477+ where parse o = DirectGenerators
5478+ <$> o .: "field"
5479+ <*> o .:? "size"
5480+ <*> o .: "suggest_mode"
5481+ <*> o .:? "max_edits"
5482+ <*> o .:? "prefix_length"
5483+ <*> o .:? "min_word_length"
5484+ <*> o .:? "max_inspections"
5485+ <*> o .:? "min_doc_freq"
5486+ <*> o .:? "max_term_freq"
5487+ <*> o .:? "pre_filter"
5488+ <*> o .:? "post_filter"
5489+
5490+mkDirectGenerators :: FieldName -> DirectGenerators
5491+mkDirectGenerators fn = DirectGenerators fn Nothing DirectGeneratorSuggestModeMissing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing
stack-8.2.yaml+1
@@ -7,6 +7,7 @@ packages:
7 - './examples'
7 - './examples'
8
8
9extra-deps:
9extra-deps:
10+ - quickcheck-properties-0.1
10 - http-types-0.12
11 - http-types-0.12
11
12
12resolver: lts-10.0
13resolver: lts-10.0
tests/V1/tests.hs+6
@@ -607,6 +607,8 @@ instance ApproxEq PhraseSuggesterCollate
607instance ApproxEq PhraseSuggester
607instance ApproxEq PhraseSuggester
608instance ApproxEq SuggestType
608instance ApproxEq SuggestType
609instance ApproxEq Suggest
609instance ApproxEq Suggest
610+instance ApproxEq DirectGenerators
611+instance ApproxEq DirectGeneratorSuggestModeTypes
610
612
611-- | Due to the way nodeattrfilters get serialized here, they may come
613-- | Due to the way nodeattrfilters get serialized here, they may come
612-- out in a different order, but they are morally equivalent
614-- out in a different order, but they are morally equivalent
@@ -948,6 +950,8 @@ instance Arbitrary Size where arbitrary = sopArbitrary; shrink = genericShrink
948instance Arbitrary PhraseSuggester where arbitrary = sopArbitrary; shrink = genericShrink
950instance Arbitrary PhraseSuggester where arbitrary = sopArbitrary; shrink = genericShrink
949instance Arbitrary SuggestType where arbitrary = sopArbitrary; shrink = genericShrink
951instance Arbitrary SuggestType where arbitrary = sopArbitrary; shrink = genericShrink
950instance Arbitrary Suggest where arbitrary = sopArbitrary; shrink = genericShrink
952instance Arbitrary Suggest where arbitrary = sopArbitrary; shrink = genericShrink
953+instance Arbitrary DirectGenerators where arbitrary = sopArbitrary; shrink = genericShrink
954+instance Arbitrary DirectGeneratorSuggestModeTypes where arbitrary = sopArbitrary; shrink = genericShrink
951
955
952newtype UpdatableIndexSetting' = UpdatableIndexSetting' UpdatableIndexSetting
956newtype UpdatableIndexSetting' = UpdatableIndexSetting' UpdatableIndexSetting
953 deriving (Show, Eq, ToJSON, FromJSON, ApproxEq, Typeable)
957 deriving (Show, Eq, ToJSON, FromJSON, ApproxEq, Typeable)
@@ -1944,6 +1948,8 @@ main = hspec $ do
1944 propJSON (Proxy :: Proxy CompoundFormat)
1948 propJSON (Proxy :: Proxy CompoundFormat)
1945 propJSON (Proxy :: Proxy TemplateQueryInline)
1949 propJSON (Proxy :: Proxy TemplateQueryInline)
1946 propJSON (Proxy :: Proxy Suggest)
1950 propJSON (Proxy :: Proxy Suggest)
1951+ propJSON (Proxy :: Proxy DirectGenerators)
1952+ propJSON (Proxy :: Proxy DirectGeneratorSuggestModeTypes)
1947
1953
1948-- Temporary solution for lacking of generic derivation of Arbitrary
1954-- Temporary solution for lacking of generic derivation of Arbitrary
1949-- We use generics-sop, as it's much more concise than directly using GHC.Generics
1955-- We use generics-sop, as it's much more concise than directly using GHC.Generics
tests/V5/tests.hs+6
@@ -619,6 +619,8 @@ instance ApproxEq PhraseSuggesterCollate
619instance ApproxEq PhraseSuggester
619instance ApproxEq PhraseSuggester
620instance ApproxEq SuggestType
620instance ApproxEq SuggestType
621instance ApproxEq Suggest
621instance ApproxEq Suggest
622+instance ApproxEq DirectGenerators
623+instance ApproxEq DirectGeneratorSuggestModeTypes
622
624
623-- | Due to the way nodeattrfilters get serialized here, they may come
625-- | Due to the way nodeattrfilters get serialized here, they may come
624-- out in a different order, but they are morally equivalent
626-- out in a different order, but they are morally equivalent
@@ -941,6 +943,8 @@ instance Arbitrary Size where arbitrary = sopArbitrary; shrink = genericShrink
941instance Arbitrary PhraseSuggester where arbitrary = sopArbitrary; shrink = genericShrink
943instance Arbitrary PhraseSuggester where arbitrary = sopArbitrary; shrink = genericShrink
942instance Arbitrary SuggestType where arbitrary = sopArbitrary; shrink = genericShrink
944instance Arbitrary SuggestType where arbitrary = sopArbitrary; shrink = genericShrink
943instance Arbitrary Suggest where arbitrary = sopArbitrary; shrink = genericShrink
945instance Arbitrary Suggest where arbitrary = sopArbitrary; shrink = genericShrink
946+instance Arbitrary DirectGenerators where arbitrary = sopArbitrary; shrink = genericShrink
947+instance Arbitrary DirectGeneratorSuggestModeTypes where arbitrary = sopArbitrary; shrink = genericShrink
944
948
945newtype UpdatableIndexSetting' = UpdatableIndexSetting' UpdatableIndexSetting
949newtype UpdatableIndexSetting' = UpdatableIndexSetting' UpdatableIndexSetting
946 deriving (Show, Eq, ToJSON, FromJSON, ApproxEq, Typeable)
950 deriving (Show, Eq, ToJSON, FromJSON, ApproxEq, Typeable)
@@ -1805,6 +1809,8 @@ main = hspec $ do
1805 propJSON (Proxy :: Proxy CompoundFormat)
1809 propJSON (Proxy :: Proxy CompoundFormat)
1806 propJSON (Proxy :: Proxy TemplateQueryInline)
1810 propJSON (Proxy :: Proxy TemplateQueryInline)
1807 propJSON (Proxy :: Proxy Suggest)
1811 propJSON (Proxy :: Proxy Suggest)
1812+ propJSON (Proxy :: Proxy DirectGenerators)
1813+ propJSON (Proxy :: Proxy DirectGeneratorSuggestModeTypes)
1808
1814
1809-- Temporary solution for lacking of generic derivation of Arbitrary
1815-- Temporary solution for lacking of generic derivation of Arbitrary
1810-- We use generics-sop, as it's much more concise than directly using GHC.Generics
1816-- We use generics-sop, as it's much more concise than directly using GHC.Generics