175 lines
4.7 KiB
JavaScript
175 lines
4.7 KiB
JavaScript
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(req.params.tag, 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"});
|
|
};
|