git.iko.soy/typeable/bloodhound
on master help sign in
Break out aggregation records to their own type; 1.0.3 compatibility with DateHistogramAggregation
9acfe79Christopher Guiney
Database/Bloodhound/Types.hs+32−30
@@ -966,8 +966,7 @@ data TermOrder = TermOrder{ termSortField :: Text
966 , termSortOrder :: SortOrder } deriving (Eq, Show)
966 , termSortOrder :: SortOrder } deriving (Eq, Show)
967
967
968data TermInclusion = TermInclusion Text
968data TermInclusion = TermInclusion Text
969− | TermPattern { pattern :: Text
970− , flags :: Text } deriving (Eq, Show)
969+ | TermPattern Text Text deriving (Eq, Show)
971
970
972data CollectionMode = BreadthFirst
971data CollectionMode = BreadthFirst
973 | DepthFirst deriving (Eq, Show)
972 | DepthFirst deriving (Eq, Show)
@@ -997,32 +996,35 @@ data Interval = Year
997 | FractionalInterval { fraction :: Float
996 | FractionalInterval { fraction :: Float
998 , interval :: TimeInterval } deriving (Eq, Show)
997 , interval :: TimeInterval } deriving (Eq, Show)
999
998
999+data Aggregation = TermsAgg TermsAggregation
1000+ | DateHistogramAgg DateHistogramAggregation deriving (Eq, Show)
1001+
1000−data Aggregation = TermsAggregation { term :: Text
1002+data TermsAggregation = TermsAggregation { term :: Text
1001− , termScript :: Maybe Text
1003+ , termScript :: Maybe Text
1002− , termInclude :: Maybe TermInclusion
1004+ , termInclude :: Maybe TermInclusion
1003− , termExclude :: Maybe TermInclusion
1005+ , termExclude :: Maybe TermInclusion
1004− , termOrder :: Maybe TermOrder
1006+ , termOrder :: Maybe TermOrder
1005− , termMinDocCount :: Maybe Int
1007+ , termMinDocCount :: Maybe Int
1006− , termSize :: Maybe Int
1008+ , termSize :: Maybe Int
1007− , termShardSize :: Maybe Int
1009+ , termShardSize :: Maybe Int
1008− , termCollectMode :: Maybe CollectionMode
1010+ , termCollectMode :: Maybe CollectionMode
1009− , termAggs :: Maybe Aggregations
1011+ , termAggs :: Maybe Aggregations
1010− }
1012+ } deriving (Eq, Show)
1011− | DateHistogramAggregation { dateField :: FieldName
1013+data DateHistogramAggregation = DateHistogramAggregation { dateField :: FieldName
1012− , dateInterval :: Interval
1014+ , dateInterval :: Interval
1013− , dateFormat :: Maybe Text
1015+ , dateFormat :: Maybe Text
1014− , datePreZone :: Maybe Text
1016+ , datePreZone :: Maybe Text
1015− , datePostZone :: Maybe Text
1017+ , datePostZone :: Maybe Text
1016− , datePreOffset :: Maybe Text
1018+ , datePreOffset :: Maybe Text
1017− , datePostOffset :: Maybe Text
1019+ , datePostOffset :: Maybe Text
1018− , dateAggs :: Maybe Aggregations
1020+ , dateAggs :: Maybe Aggregations
1019− } deriving (Eq, Show)
1021+ } deriving (Eq, Show)
1020
1022
1021mkTermsAggregation :: Text -> Aggregation
1023mkTermsAggregation :: Text -> Aggregation
1022−mkTermsAggregation t = TermsAggregation t Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing
1024+mkTermsAggregation t = TermsAgg $ TermsAggregation t Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing
1023
1025
1024mkDateHistogram :: FieldName -> Interval -> Aggregation
1026mkDateHistogram :: FieldName -> Interval -> Aggregation
1025−mkDateHistogram t i = DateHistogramAggregation t i Nothing Nothing Nothing Nothing Nothing Nothing
1027+mkDateHistogram t i = DateHistogramAgg $ DateHistogramAggregation t i Nothing Nothing Nothing Nothing Nothing Nothing
1026
1028
1027instance ToJSON TermOrder where
1029instance ToJSON TermOrder where
1028 toJSON (TermOrder termSortField termSortOrder) = object [termSortField .= termSortOrder]
1030 toJSON (TermOrder termSortField termSortOrder) = object [termSortField .= termSortOrder]
@@ -1030,7 +1032,7 @@ instance ToJSON TermOrder where
1030instance ToJSON TermInclusion where
1032instance ToJSON TermInclusion where
1031 toJSON (TermInclusion x) = toJSON x
1033 toJSON (TermInclusion x) = toJSON x
1032 toJSON (TermPattern pattern flags) = omitNulls [ "pattern" .= pattern,
1034 toJSON (TermPattern pattern flags) = omitNulls [ "pattern" .= pattern,
1033− "flags" .= flags]
1035+ "flags" .= flags]
1034
1036
1035instance ToJSON CollectionMode where
1037instance ToJSON CollectionMode where
1036 toJSON BreadthFirst = "breadth_first"
1038 toJSON BreadthFirst = "breadth_first"
@@ -1064,7 +1066,7 @@ instance Show TimeInterval where
1064 show Seconds = "s"
1066 show Seconds = "s"
1065
1067
1066instance ToJSON Aggregation where
1068instance ToJSON Aggregation where
1067− toJSON (TermsAggregation term termScript termInclude termExclude termOrder termMinDocCount termSize termShardSize termCollectMode termAggs) =
1069+ toJSON (TermsAgg (TermsAggregation term termScript termInclude termExclude termOrder termMinDocCount termSize termShardSize termCollectMode termAggs)) =
1068 omitNulls ["terms" .= (omitNulls [ "field" .= (toJSON $ term) ,
1070 omitNulls ["terms" .= (omitNulls [ "field" .= (toJSON $ term) ,
1069 "script" .= (toJSON termScript),
1071 "script" .= (toJSON termScript),
1070 "include" .= (toJSON termInclude),
1072 "include" .= (toJSON termInclude),
@@ -1077,7 +1079,7 @@ instance ToJSON Aggregation where
1077 ]),
1079 ]),
1078 "aggs" .= (toJSON termAggs) ]
1080 "aggs" .= (toJSON termAggs) ]
1079
1081
1080− toJSON (DateHistogramAggregation dateField dateInterval dateFormat datePreZone datePostZone datePreOffset datePostOffset dateAggs) =
1082+ toJSON (DateHistogramAgg (DateHistogramAggregation dateField dateInterval dateFormat datePreZone datePostZone datePreOffset datePostOffset dateAggs)) =
1081 omitNulls ["date_histogram" .= (omitNulls [ "field" .= (toJSON dateField),
1083 omitNulls ["date_histogram" .= (omitNulls [ "field" .= (toJSON dateField),
1082 "interval" .= (toJSON dateInterval),
1084 "interval" .= (toJSON dateInterval),
1083 "format" .= (toJSON dateFormat),
1085 "format" .= (toJSON dateFormat),
@@ -1103,7 +1105,7 @@ data TermsResult = TermsResult { termKey :: Text
1103 , termsAggs :: Maybe AggregationResults } deriving (Show)
1105 , termsAggs :: Maybe AggregationResults } deriving (Show)
1104
1106
1105data DateHistogramResult = DateHistogramResult { dateKey :: Int
1107data DateHistogramResult = DateHistogramResult { dateKey :: Int
1106− , dateKeyStr :: Text
1108+ , dateKeyStr :: Maybe Text
1107 , dateDocCount :: Int
1109 , dateDocCount :: Int
1108 , dateHistogramAggs :: Maybe AggregationResults } deriving (Show)
1110 , dateHistogramAggs :: Maybe AggregationResults } deriving (Show)
1109
1111
@@ -1121,7 +1123,7 @@ instance BucketAggregation TermsResult where
1121 aggs = termsAggs
1123 aggs = termsAggs
1122
1124
1123instance BucketAggregation DateHistogramResult where
1125instance BucketAggregation DateHistogramResult where
1124− key = dateKeyStr
1126+ key = showText . dateKey
1125 docCount = dateDocCount
1127 docCount = dateDocCount
1126 aggs = dateHistogramAggs
1128 aggs = dateHistogramAggs
1127
1129
@@ -1139,7 +1141,7 @@ instance FromJSON TermsResult where
1139instance FromJSON DateHistogramResult where
1141instance FromJSON DateHistogramResult where
1140 parseJSON (Object v) = DateHistogramResult <$>
1142 parseJSON (Object v) = DateHistogramResult <$>
1141 v .: "key" <*>
1143 v .: "key" <*>
1142− v .: "key_as_string" <*>
1144+ v .:? "key_as_string" <*>
1143 v .: "doc_count" <*>
1145 v .: "doc_count" <*>
1144 v .:? "aggregations"
1146 v .:? "aggregations"
1145
1147