var dbFile = "/usr/db/data.db" // app.get('/json/add/:tag', fns.addTag); // Adds a tag to the scan list // app.get('/json/remove/:tag', fns.removeTag); // Removes a tag from the scan list // app.get('/json/val/:tag', fns.latestTagValue); // Gets the latest value of a single tag // app.get('/json/series/:tag/:hours', fns.seriesTagValues); // Gets all the values of a tag for the last X hours // app.get('/json/tags', fns.allTags); // Lists all tags in the scan list // app.get('/json/all', fns.allValues); // Gets the latest values of all tags in the scan list var getTagID = function(tagName, cb){ //Returns function(err, id) var sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database(dbFile); db.serialize(function(){ var query = "SELECT id FROM tags WHERE tagName = ?"; var prepQuery = db.prepare(query); prepQuery.all(tagName, function(err, rows){ prepQuery.finalize(); db.close(); if (err){ cb(err, null); } else { cb(null, rows[0].id); } }) }); }; var getTagName = function(tagID, cb){ //Returns function(err, tagName) var sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database(dbFile); db.serialize(function(){ var query = "SELECT tagName FROM tags WHERE id = ?"; var prepQuery = db.prepare(query); prepQuery.all(tagID, function(err, rows){ prepQuery.finalize(); db.close(); if (err){ cb(err, null); } else { cb(null, rows[0].tagName); } }) }); }; exports.getTagID = function(req, res){ getTagID(req.params.tagName, function(err, id){ if (err){ console.log(err); res.json({status:"error", message:err}); } else { res.json({status: "OK", tagName: req.params.tagName, id: id}); } }) }; exports.getTagName = function(req, res){ getTagName(req.params.tagID, function(err, tagName){ if (err){ console.log(err); res.json({status:"error", message:err}); } else { res.json({status: "OK", tagID: req.params.tagID, tagName: tagName}); } }) }; exports.addTag = function(req, res){ var sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database(dbFile); db.serialize(function(){ var query = "INSERT INTO tags (tagName, units) VALUES (?, ?)"; var prepQuery = db.prepare(query); prepQuery.run(req.params.tagName, req.params.units, function(err){ prepQuery.finalize(); db.close(); if (err) { res.json({status:"error", message:err}); console.log(err); } else { res.json({status:"OK"}); } }); }); }; exports.removeTag = function(req, res){ var sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database(dbFile); db.serialize(function(){ var query = "UPDATE tags SET deleted = 1 WHERE id = ?"; var preqQuery = db.prepare(query); prepQuery.run(req.params.tag, function(err) { prepQuery.finalize(); db.close(); if (err) { res.json({status:"error", message:err}); console.log(err); } else { res.json({status:"OK"}); } }); }); }; exports.latestTagValue = function(req, res){ var sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database(dbFile); db.serialize(function(){ var query = "SELECT * FROM vals WHERE id = (SELECT MAX(id) FROM vals WHERE tagID = (SELECT id FROM tags WHERE tagName = ?))"; var prepQuery = db.prepare(query); prepQuery.run(req.params.tag, function(err) { prepQuery.finalize(); db.close(); if (err) { res.json({status:"error", message:err}); console.log(err); } else { res.json({status:"OK", tag_val:rows[0]}); } }); }); }; exports.seriesTagValues = function(req, res){ var sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database(dbFile); db.serialize(function(){ var query = "SELECT * FROM vals WHERE tagID = ? AND dateAdded > DATETIME('now', '-? HOUR')"; var prepQuery = db.prepare(query); prepQuery.all(parseInt(req.params.tag), parseInt(req.params.hours), function(err, rows){ prepQuery.finalize(); db.close(); if (err){ console.log(err); res.json({status:"error", message:err, query:query}); } else { res.json({status:"OK", tag: req.params.tag, vals:rows}); } }) }); }; exports.allTags = function(req, res){ var sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database(dbFile); db.serialize(function(){ var query = "SELECT * FROM tags WHERE deleted = 0"; var prepQuery = db.prepare(query); prepQuery.all(function(err, rows) { prepQuery.finalize(); db.close(); if (err) { res.json({status:"error", message:err}); console.log(err); } else { res.json({status:"OK", tags:rows}); } }); }); }; exports.allValues = function(req, res){ res.json({status: "error", message: "not implemented"}); };