git.iko.soy/typeable/bloodhound
on master help sign in
All parsing tests passing now!
commit1bffa02a16b8f6f28dd9aeb281853b9d74df0e2b authorMichael Xavier <michael@michaelxavier.net> dateWed 28 Oct 2015, 19:13 (11 years ago) parent4768fbd
2 files changed+61−8
src/Database/Bloodhound/Types.hs+11−6 tests/tests.hs+50−2
src/Database/Bloodhound/Types.hs+11−6
@@ -1825,12 +1825,12 @@ instance ToJSON Query where
18251825 object [ "common" .= commonTermsQuery ]
18261826
18271827 toJSON (ConstantScoreFilter csFilter boost) =
1828− object [ "constant_score" .= csFilter
1828+ object ["filter" .= object ["constant_score" .= csFilter]
18291829 , "boost" .= boost]
18301830
18311831 toJSON (ConstantScoreQuery query boost) =
1832− object [ "constant_score" .= query
1833− , "boost" .= boost]
1832+ object ["query" .= object ["constant_score" .= query]
1833+ , "boost" .= boost]
18341834
18351835 toJSON (QueryDisMaxQuery disMaxQuery) =
18361836 object [ "dis_max" .= disMaxQuery ]
@@ -1926,10 +1926,15 @@ instance FromJSON Query where
19261926 queryBoolQuery = pure . QueryBoolQuery
19271927 queryBoostingQuery = pure . QueryBoostingQuery
19281928 queryCommonTermsQuery = pure . QueryCommonTermsQuery
1929− constantScoreFilter o = ConstantScoreFilter <$> o .: "constant_score"
1930− <*> o .: "boost"
1931− constantScoreQuery o = ConstantScoreQuery <$> o .: "constant_score"
1929+ --FIXME: these are ambiguous
1930+ constantScoreFilter o = case HM.lookup "filter" o of
1931+ Just (Object o') -> ConstantScoreFilter <$> o' .: "constant_score"
19321932 <*> o .: "boost"
1933+ _ -> fail "Does not appear to be a ConstantScoreFilter"
1934+ constantScoreQuery o = case HM.lookup "query" o of
1935+ Just (Object o') -> ConstantScoreQuery <$> o' .: "constant_score"
1936+ <*> o .: "boost"
1937+ _ -> fail "Does not appear to be a ConstantScoreFilter"
19331938 queryDisMaxQuery = pure . QueryDisMaxQuery
19341939 queryFilteredQuery = pure . QueryFilteredQuery
19351940 queryFuzzyLikeThisQuery = pure . QueryFuzzyLikeThisQuery
tests/tests.hs+50−2
@@ -351,6 +351,56 @@ instance Arbitrary RegexpFlags where
351351instance Arbitrary IndexAliasCreate where
352352 arbitrary = IndexAliasCreate <$> arbitrary <*> reduceSize arbitrary
353353
354+instance Arbitrary Query where
355+ arbitrary = reduceSize $ oneof [ TermQuery <$> arbitrary <*> arbitrary
356+ , TermsQuery <$> arbitrary <*> arbitrary
357+ , QueryMatchQuery <$> arbitrary
358+ , QueryMultiMatchQuery <$> arbitrary
359+ , QueryBoolQuery <$> arbitrary
360+ , QueryBoostingQuery <$> arbitrary
361+ , QueryCommonTermsQuery <$> arbitrary
362+ , ConstantScoreFilter <$> arbitrary <*> arbitrary
363+ , ConstantScoreQuery <$> arbitrary <*> arbitrary
364+ , QueryDisMaxQuery <$> arbitrary
365+ , QueryFilteredQuery <$> arbitrary
366+ , QueryFuzzyLikeThisQuery <$> arbitrary
367+ , QueryFuzzyLikeFieldQuery <$> arbitrary
368+ , QueryFuzzyQuery <$> arbitrary
369+ , QueryHasChildQuery <$> arbitrary
370+ , QueryHasParentQuery <$> arbitrary
371+ , IdsQuery <$> arbitrary <*> arbitrary
372+ , QueryIndicesQuery <$> arbitrary
373+ , MatchAllQuery <$> arbitrary
374+ , QueryMoreLikeThisQuery <$> arbitrary
375+ , QueryMoreLikeThisFieldQuery <$> arbitrary
376+ , QueryNestedQuery <$> arbitrary
377+ , QueryPrefixQuery <$> arbitrary
378+ , QueryQueryStringQuery <$> arbitrary
379+ , QuerySimpleQueryStringQuery <$> arbitrary
380+ , QueryRangeQuery <$> arbitrary
381+ , QueryRegexpQuery <$> arbitrary
382+ ]
383+
384+instance Arbitrary Filter where
385+ arbitrary = reduceSize $ oneof [ AndFilter <$> arbitrary <*> arbitrary
386+ , OrFilter <$> arbitrary <*> arbitrary
387+ , NotFilter <$> arbitrary <*> arbitrary
388+ , pure IdentityFilter
389+ , BoolFilter <$> arbitrary
390+ , ExistsFilter <$> arbitrary
391+ , GeoBoundingBoxFilter <$> arbitrary
392+ , GeoDistanceFilter <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
393+ , GeoDistanceRangeFilter <$> arbitrary <*> arbitrary
394+ , GeoPolygonFilter <$> arbitrary <*> arbitrary
395+ , IdsFilter <$> arbitrary <*> arbitrary
396+ , LimitFilter <$> arbitrary
397+ , MissingFilter <$> arbitrary <*> arbitrary <*> arbitrary
398+ , PrefixFilter <$> arbitrary <*> arbitrary <*> arbitrary
399+ , QueryFilter <$> arbitrary <*> arbitrary
400+ , RangeFilter <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
401+ , RegexpFilter <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
402+ , TermFilter <$> arbitrary <*> arbitrary]
403+
354404$(derive makeArbitrary ''IndexName)
355405$(derive makeArbitrary ''MappingName)
356406$(derive makeArbitrary ''DocId)
@@ -394,8 +444,6 @@ $(derive makeArbitrary ''PhraseSlop)
394444$(derive makeArbitrary ''MinDocFrequency)
395445$(derive makeArbitrary ''MaxDocFrequency)
396446$(derive makeArbitrary ''Regexp)
397−$(derive makeArbitrary ''Filter)
398−$(derive makeArbitrary ''Query)
399447$(derive makeArbitrary ''SimpleQueryStringQuery)
400448$(derive makeArbitrary ''FieldOrFields)
401449$(derive makeArbitrary ''SimpleQueryFlag)