Files
iot/src/db/devices.js
2021-07-30 11:56:19 +03:00

72 lines
2.4 KiB
JavaScript

var mysql = require('mysql');
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../../config/config.json')[env];
var pool = mysql.createPool({
connectionLimit : 20,
host : config.host,
user : config.username,
password : config.password,
database : config.database
});
pool.on('acquire', function (connection) {
console.log('Connection %d acquired', connection.threadId);
});
exports.findByName = function(deviceName, cb) {
process.nextTick(function() {
console.log("findByName(" +deviceName + "," + days +")" );
pool.getConnection(function(err, con) {
if (err) throw err; // not connected!
con.query("SELECT * FROM devices WHERE (name=? OR ? IS NULL) )", [deviceName, deviceName], (err, data) => {
con.release();
if (!err) {
cb(null, data);
} else {
cb(new Error('SQL Error: ' + err));
}
});
});
});
}
exports.insert = function(deviceName, baseurl, apikey,lastseen, cb){
var params = [deviceName, baseurl, apikey,lastseen];
let sql = `INSERT INTO devices (name,baseurl,apikey,lastseen,timestamp)
VALUES (?,?,?,?,NOW());`;
pool.getConnection(function(err, con) {
if (err) throw err; // not connected!
con.query(sql, params,(err, r) => {
con.release();
//if(!cb) {return;}
if (err) {
console.log("error: ", err);
cb && cb(new Error('SQL Error: ' + err));
}else{
console.log("inserted record: ", { id: r.insertId});
cb && cb(null, { id: r.insertId, ...params });
}
});
});
}
exports.update = function(deviceName, baseurl, cb){
var params = [deviceName, baseurl, apikey,lastseen];
let sql = `INSERT INTO devices (name,baseurl,apikey,lastseen,timestamp)
VALUES (?,?,?,?,NOW());`;
pool.getConnection(function(err, con) {
if (err) throw err; // not connected!
con.query(sql, params,(err, r) => {
con.release();
//if(!cb) {return;}
if (err) {
console.log("error: ", err);
cb && cb(new Error('SQL Error: ' + err));
}else{
console.log("inserted record: ", { id: r.insertId});
cb && cb(null, { id: r.insertId, ...params });
}
});
});
}