* Use grafana toolkit template for building plugin * Fix linter and type errors * Update styles building * Fix sass deprecation warning * Remove empty js files produced by webpack building sass * Fix signing script * Replace classnames with cx * Fix data source config page * Use custom webpack config instead of overriding original one * Use gpx_ prefix for plugin executable * Remove unused configs * Roll back react hooks dependencies usage * Move plugin-specific ts config to root config file * Temporary do not use rst2html for function description tooltip * Remove unused code * remove unused dependencies * update react table dependency * Migrate tests to typescript * remove unused dependencies * Remove old webpack configs * Add sign target to makefile * Add magefile * Update CI test job * Update go packages * Update build instructions * Downgrade go version to 1.18 * Fix go version in ci * Fix metric picker * Add comment to webpack config * remove angular mocks * update bra config * Rename datasource-zabbix to datasource (fix mage build) * Add instructions for building backend with mage * Fix webpack targets * Fix ci backend tests * Add initial e2e tests * Fix e2e ci tests * Update docker compose for cypress tests * build grafana docker image * Fix docker stop task * CI: add Grafana compatibility check
53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
/**
|
|
* Postgres queries
|
|
*/
|
|
|
|
const ITEMID_FORMAT = 'FM99999999999999999999';
|
|
|
|
function historyQuery(itemids, table, timeFrom, timeTill, intervalSec, aggFunction) {
|
|
const time_expression = `clock / ${intervalSec} * ${intervalSec}`;
|
|
return `
|
|
SELECT to_char(itemid, '${ITEMID_FORMAT}') AS metric, ${time_expression} AS time, ${aggFunction}(value) AS value
|
|
FROM ${table}
|
|
WHERE itemid IN (${itemids})
|
|
AND clock
|
|
> ${timeFrom}
|
|
AND clock
|
|
< ${timeTill}
|
|
GROUP BY 1, 2
|
|
ORDER BY time ASC
|
|
`;
|
|
}
|
|
|
|
function trendsQuery(itemids, table, timeFrom, timeTill, intervalSec, aggFunction, valueColumn) {
|
|
const time_expression = `clock / ${intervalSec} * ${intervalSec}`;
|
|
return `
|
|
SELECT to_char(itemid, '${ITEMID_FORMAT}') AS metric, ${time_expression} AS time, ${aggFunction}(${valueColumn}) AS value
|
|
FROM ${table}
|
|
WHERE itemid IN (${itemids})
|
|
AND clock
|
|
> ${timeFrom}
|
|
AND clock
|
|
< ${timeTill}
|
|
GROUP BY 1, 2
|
|
ORDER BY time ASC
|
|
`;
|
|
}
|
|
|
|
const TEST_QUERY = `
|
|
SELECT to_char(itemid, '${ITEMID_FORMAT}') AS metric, clock AS time, value_avg AS value
|
|
FROM trends_uint LIMIT 1
|
|
`;
|
|
|
|
function testQuery() {
|
|
return TEST_QUERY;
|
|
}
|
|
|
|
const postgres = {
|
|
historyQuery,
|
|
trendsQuery,
|
|
testQuery,
|
|
};
|
|
|
|
export default postgres;
|