-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathdataAccess.js
More file actions
90 lines (81 loc) · 2.48 KB
/
dataAccess.js
File metadata and controls
90 lines (81 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
var mysql = require('mysql');
var dbsettings = require('./dbconf.js');
var util = require('util');
console.log(util.inspect(process.memoryUsage()));
var pool = mysql.createPool({
queuelimit: 10,
host : dbsettings.host,
user : dbsettings.user,
password : dbsettings.password,
database : dbsettings.database
});
// parses what is returned from db
function parseResult(rows) {
var data = [];
if (rows && rows !== []) {
for (var i = 0; i < rows.length; i++ ) {
data.push({
'category': rows[i].sensor_name,
'time': rows[i].reading_time ? rows[i].reading_time.toString() : '',
'value': rows[i].reading_value,
});
}
}
return data;
}
function buildSelect(options) {
var sql = 'select sensor_name, reading_time, reading_value from todmorden where 1 ';
if (options.category) {
sql += ' and sensor_name = "' +options.category+ '"';
}
if (options.from) {
sql += ' and reading_time >= "'+options.from+'"';
}
if (options.to) {
sql += ' and reading_time <= "'+options.to+'"';
}
sql +=' order by reading_time desc ';
if (options.limit) {
sql +=' limit '+options.limit;
}
return sql;
}
function parseCategories(rows) {
var names = [];
for (var i = 0; i < rows.length; i++ ) {
names.push("'"+rows[i].sensor_name+"'");
}
return names.join();
}
module.exports.createReading = function(reading, callback) {
pool.query('insert into todmorden set ?', reading, callback);
};
module.exports.deleteReading = function(id, callback) {
pool.query('delete from todmorden where id = ?', id, callback);
};
module.exports.getCategories = function(callback) {
var sql = 'select distinct sensor_name from todmorden';
pool.query(sql, function(err, result) {
if (err) {
callback(err);
} else {
var categories = [];
result.forEach(function(row) {
categories.push(row.sensor_name);
});
callback(null, categories);
}
});
};
module.exports.getReadings = function(options, callback) {
//console.log('before', util.inspect(process.memoryUsage()));
var sql = buildSelect(options);
pool.query(sql, function(err, result) {
//console.log('after', util.inspect(process.memoryUsage()));
if (err) {
callback(err);
} else {
callback(null, parseResult(result));
}
});
};