var DB_FILE = 'db/stats.db'; var sqlite3 = require('sqlite3'); var bodyParser = require('body-parser'); var moment = require('moment'); var express = require("express"); var app = express(); var db = new sqlite3.Database(DB_FILE, sqlite3.OPEN_READONLY); var isValidChart = function(s) { return /^(net_in|net_out|block_in|block_out|mem)$/.test(s); }; var isValidZoom = function(s) { return /^(hour|day|week|month)$/.test(s); }; var getMinDate = function(zoom) { var now = moment(); now.subtract(1, zoom + 's'); return now.format('YYYY-MM-DD HH:mm:ss'); }; var processPreResult = function(result, containers, preResult) { var timestamps = []; var ts; for (ts in preResult) { timestamps.push(ts); } timestamps.sort(); for (var k=0; k= ? ORDER BY ts ASC", id, minDate, function(err, rows) { var prev = 0; for (var i=0; i= ? ORDER BY ts ASC", req.params.id, minDate, function(err, rows) { var json = [['Time', 'Bytes']]; var prev = 0; for (var i=0; i