| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // MACROS
- // List all measurements for a given database: `measurements(database)`
- const MEASUREMENTS_REGEXP = /^\s*measurements\((.+)\)\s*$/;
- // List all tags for a given database and measurement: `tags(database, measurement)`
- const TAGS_REGEXP = /^\s*tags\((.+)\s*,\s*(.+)\)\s*$/;
- // List all tag values for a given database, measurement, and tag: `tag_valuess(database, measurement, tag)`
- const TAG_VALUES_REGEXP = /^\s*tag_values\((.+)\s*,\s*(.+)\s*,\s*(.+)\)\s*$/;
- // List all field keys for a given database and measurement: `field_keys(database, measurement)`
- const FIELD_KEYS_REGEXP = /^\s*field_keys\((.+)\s*,\s*(.+)\)\s*$/;
- export default function expandMacros(query) {
- const measurementsQuery = query.match(MEASUREMENTS_REGEXP);
- if (measurementsQuery) {
- const database = measurementsQuery[1];
- return `from(db:"${database}")
- |> range($range)
- |> group(by:["_measurement"])
- |> distinct(column:"_measurement")
- |> group(none:true)`;
- }
- const tagsQuery = query.match(TAGS_REGEXP);
- if (tagsQuery) {
- const database = tagsQuery[1];
- const measurement = tagsQuery[2];
- return `from(db:"${database}")
- |> range($range)
- |> filter(fn:(r) => r._measurement == "${measurement}")
- |> keys()`;
- }
- const tagValuesQuery = query.match(TAG_VALUES_REGEXP);
- if (tagValuesQuery) {
- const database = tagValuesQuery[1];
- const measurement = tagValuesQuery[2];
- const tag = tagValuesQuery[3];
- return `from(db:"${database}")
- |> range($range)
- |> filter(fn:(r) => r._measurement == "${measurement}")
- |> group(by:["${tag}"])
- |> distinct(column:"${tag}")
- |> group(none:true)`;
- }
- const fieldKeysQuery = query.match(FIELD_KEYS_REGEXP);
- if (fieldKeysQuery) {
- const database = fieldKeysQuery[1];
- const measurement = fieldKeysQuery[2];
- return `from(db:"${database}")
- |> range($range)
- |> filter(fn:(r) => r._measurement == "${measurement}")
- |> group(by:["_field"])
- |> distinct(column:"_field")
- |> group(none:true)`;
- }
- // By default return pure query
- return query;
- }
|