49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
/**
|
|
* Postgres queries
|
|
*/
|
|
|
|
const ITEMID_FORMAT = 'FM99999999999999999999';
|
|
|
|
function historyQuery(itemids, table, timeFrom, timeTill, intervalSec, aggFunction) {
|
|
let time_expression = `clock / ${intervalSec} * ${intervalSec}`;
|
|
let query = `
|
|
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
|
|
`;
|
|
return query;
|
|
}
|
|
|
|
function trendsQuery(itemids, table, timeFrom, timeTill, intervalSec, aggFunction, valueColumn) {
|
|
let time_expression = `clock / ${intervalSec} * ${intervalSec}`;
|
|
let query = `
|
|
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
|
|
`;
|
|
return query;
|
|
}
|
|
|
|
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;
|