summaryrefslogtreecommitdiffstats
path: root/src/web/api/queries/query.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/web/api/queries/query.h')
-rw-r--r--src/web/api/queries/query.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/web/api/queries/query.h b/src/web/api/queries/query.h
new file mode 100644
index 000000000..37202a0ba
--- /dev/null
+++ b/src/web/api/queries/query.h
@@ -0,0 +1,100 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#ifndef NETDATA_API_DATA_QUERY_H
+#define NETDATA_API_DATA_QUERY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum rrdr_time_grouping {
+ RRDR_GROUPING_UNDEFINED = 0,
+ RRDR_GROUPING_AVERAGE,
+ RRDR_GROUPING_MIN,
+ RRDR_GROUPING_MAX,
+ RRDR_GROUPING_SUM,
+ RRDR_GROUPING_INCREMENTAL_SUM,
+ RRDR_GROUPING_TRIMMED_MEAN1,
+ RRDR_GROUPING_TRIMMED_MEAN2,
+ RRDR_GROUPING_TRIMMED_MEAN3,
+ RRDR_GROUPING_TRIMMED_MEAN,
+ RRDR_GROUPING_TRIMMED_MEAN10,
+ RRDR_GROUPING_TRIMMED_MEAN15,
+ RRDR_GROUPING_TRIMMED_MEAN20,
+ RRDR_GROUPING_TRIMMED_MEAN25,
+ RRDR_GROUPING_MEDIAN,
+ RRDR_GROUPING_TRIMMED_MEDIAN1,
+ RRDR_GROUPING_TRIMMED_MEDIAN2,
+ RRDR_GROUPING_TRIMMED_MEDIAN3,
+ RRDR_GROUPING_TRIMMED_MEDIAN,
+ RRDR_GROUPING_TRIMMED_MEDIAN10,
+ RRDR_GROUPING_TRIMMED_MEDIAN15,
+ RRDR_GROUPING_TRIMMED_MEDIAN20,
+ RRDR_GROUPING_TRIMMED_MEDIAN25,
+ RRDR_GROUPING_PERCENTILE25,
+ RRDR_GROUPING_PERCENTILE50,
+ RRDR_GROUPING_PERCENTILE75,
+ RRDR_GROUPING_PERCENTILE80,
+ RRDR_GROUPING_PERCENTILE90,
+ RRDR_GROUPING_PERCENTILE,
+ RRDR_GROUPING_PERCENTILE97,
+ RRDR_GROUPING_PERCENTILE98,
+ RRDR_GROUPING_PERCENTILE99,
+ RRDR_GROUPING_STDDEV,
+ RRDR_GROUPING_CV,
+ RRDR_GROUPING_SES,
+ RRDR_GROUPING_DES,
+ RRDR_GROUPING_COUNTIF,
+} RRDR_TIME_GROUPING;
+
+const char *time_grouping_id2txt(RRDR_TIME_GROUPING group);
+RRDR_TIME_GROUPING time_grouping_txt2id(const char *name);
+
+void time_grouping_init(void);
+RRDR_TIME_GROUPING time_grouping_parse(const char *name, RRDR_TIME_GROUPING def);
+const char *time_grouping_tostring(RRDR_TIME_GROUPING group);
+
+typedef enum rrdr_group_by {
+ RRDR_GROUP_BY_NONE = 0,
+ RRDR_GROUP_BY_SELECTED = (1 << 0),
+ RRDR_GROUP_BY_DIMENSION = (1 << 1),
+ RRDR_GROUP_BY_INSTANCE = (1 << 2),
+ RRDR_GROUP_BY_LABEL = (1 << 3),
+ RRDR_GROUP_BY_NODE = (1 << 4),
+ RRDR_GROUP_BY_CONTEXT = (1 << 5),
+ RRDR_GROUP_BY_UNITS = (1 << 6),
+ RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE = (1 << 7),
+} RRDR_GROUP_BY;
+
+#define SUPPORTED_GROUP_BY_METHODS (\
+ RRDR_GROUP_BY_SELECTED |\
+ RRDR_GROUP_BY_DIMENSION |\
+ RRDR_GROUP_BY_INSTANCE |\
+ RRDR_GROUP_BY_LABEL |\
+ RRDR_GROUP_BY_NODE |\
+ RRDR_GROUP_BY_CONTEXT |\
+ RRDR_GROUP_BY_UNITS |\
+ RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE \
+)
+
+struct web_buffer;
+
+RRDR_GROUP_BY group_by_parse(char *s);
+void buffer_json_group_by_to_array(struct web_buffer *wb, RRDR_GROUP_BY group_by);
+
+typedef enum rrdr_group_by_function {
+ RRDR_GROUP_BY_FUNCTION_AVERAGE = 0,
+ RRDR_GROUP_BY_FUNCTION_MIN,
+ RRDR_GROUP_BY_FUNCTION_MAX,
+ RRDR_GROUP_BY_FUNCTION_SUM,
+ RRDR_GROUP_BY_FUNCTION_PERCENTAGE,
+} RRDR_GROUP_BY_FUNCTION;
+
+RRDR_GROUP_BY_FUNCTION group_by_aggregate_function_parse(const char *s);
+const char *group_by_aggregate_function_to_string(RRDR_GROUP_BY_FUNCTION group_by_function);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //NETDATA_API_DATA_QUERY_H