|
@@ -124,6 +124,59 @@ app.all('/query', function (req, res) {
|
|
|
query('sets_statistics', req, mysql_query_result, res);
|
|
|
});
|
|
|
|
|
|
+function last(table, req, mysql_query_result, res)
|
|
|
+{
|
|
|
+ var names = _.map(req.body.targets, function (t) {
|
|
|
+ return t.target;
|
|
|
+ });
|
|
|
+
|
|
|
+ var mode = "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); ";
|
|
|
+ var sql = mode + 'SELECT `timestamp`, `name`, `value` FROM `' + table + '` WHERE (`name` IN ("' + names.join('", "') + '"))';
|
|
|
+ var group_by = '';
|
|
|
+ var order_by = ' ORDER BY `timestamp` DESC';
|
|
|
+ var maxDataPoints = req.body.maxDataPoints;
|
|
|
+ var limit = ' LIMIT ' + maxDataPoints + ';';
|
|
|
+ sql += group_by + order_by + limit;
|
|
|
+
|
|
|
+ connection.query(sql, function (err, rows, fields) {
|
|
|
+ if (err) {
|
|
|
+ console.log(err);
|
|
|
+ throw err;
|
|
|
+ }
|
|
|
+
|
|
|
+ var result = [];
|
|
|
+ var results = rows[1];
|
|
|
+ for (var i = 0; i < results.length; i++) {
|
|
|
+ var name = results[i].name;
|
|
|
+ if (name !== undefined) {
|
|
|
+ if (result[name] === undefined) {
|
|
|
+ result[name] = [];
|
|
|
+ }
|
|
|
+ result[name].push([results[i].value, 1000 * results[i].timestamp]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var keys = _.keys(result);
|
|
|
+ for (var i = 0; i < keys.length; i++) {
|
|
|
+ var data = {
|
|
|
+ target: keys[i],
|
|
|
+ datapoints: result[keys[i]]
|
|
|
+ };
|
|
|
+ mysql_query_result.push(data);
|
|
|
+ }
|
|
|
+ if (res !== undefined) {
|
|
|
+ setCORSHeaders(res);
|
|
|
+ res.json(mysql_query_result);
|
|
|
+ res.end();
|
|
|
+ }
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+app.all('/last', function (req, res) {
|
|
|
+ var mysql_query_result = [];
|
|
|
+
|
|
|
+ last('gauges_statistics', req, mysql_query_result, res);
|
|
|
+});
|
|
|
+
|
|
|
app.listen(8000);
|
|
|
|
|
|
console.log("Server is listening to port 8000");
|