diff --git a/server.js b/server.js index f49fc7c..4f07f72 100644 --- a/server.js +++ b/server.js @@ -123,39 +123,28 @@ app.post('/core/edit/:id', function(req, res){ if (!req.body) { return res.sendStatus(400); } else { - // check existence of row in Cores table, if there update, otherwise insert. - var existQry = "SELECT coreId FROM Cores WHERE coreId = ?;" - db.get(existQry, coreId, function(err, row){ - if(err) throw err; - console.log(typeof row); - console.log(row); - if(typeof row == "undefined") { - var insStmt = db.prepare("INSERT INTO Cores (coreId, coreName, locationDesc) VALUES (?, ?, ?);"); - insStmt.run( - coreId, - req.body.deviceName, - req.body.locationDesc - ); - insStmt.finalize(); - } else { - if (req.body.deviceName !== "") { - var stmt = db.prepare("UPDATE Cores SET coreName = ? WHERE coreId = ?"); - stmt.run( - req.body.deviceName, - coreId - ); - stmt.finalize(); - } + pg.connect(conString, function(err, client, done) { + if(err) { return console.error('error fetching client from pool', err); } + // check existence of row in Cores table, if not there insert, otherwise update. + client.query("SELECT coreid FROM cores WHERE coreid = ($1);", [coreId], function(err, result) { + done(); - if (req.body.locationDesc !== "") { - var stmt = db.prepare("UPDATE Cores SET locationDesc = ? WHERE coreId = ?"); - stmt.run( - req.body.locationDesc, - coreId + if(err) { return console.error('error running query', err); } + if(typeof result == 'undefined') { + client.query( + "INSERT INTO cores (coreid, corename, locationdesc) VALUES ($1, $2, $3);", + [coreId, req.body.deviceName, req.body.locationDesc] ); - stmt.finalize(); + } else { + if (req.body.deviceName !== "") { + client.query("UPDATE cores SET corename =($1) WHERE coreid =($2)", [req.body.deviceName, coreId]); + } + + if (req.body.locationDesc !== "") { + client.query("UPDATE cores SET locationdesc =($1) WHERE coreid =($2)", [req.body.locationDesc, coreId]); + } } - } + }); }); res.redirect('https://particle.kaplon.us/'); @@ -166,29 +155,38 @@ app.get('/core/:id', function(req, res){ var d = new Date(); var coreId = req.params.id; console.log("GET /core/" + coreId + ", " + JSON.stringify(d, 4)); - var coreMsgQry = "SELECT al.coreId, al.published_at, al.status, co.coreName " + - "FROM Alerts al left join Cores co on al.coreId = co.coreId " + - "WHERE al.coreId = ? ORDER BY al.published_at DESC LIMIT 30;" - db.all(coreMsgQry, coreId, function(err, rows){ - if(err !== null) { - console.log(err); - } else { - //console.log("SELECT coreId, published_at FROM Alerts WHERE coreId = '" + coreId + "' ORDER BY published_at DESC LIMIT 30;"); - //console.log(rows); + + pg.connect(conString, function(err, client, done) { + if(err) { return console.error('error fetching client from pool', err); } + + var coreMsgQry = "SELECT al.coreid, al.published_at, al.status, co.corename " + + "FROM alerts al left join cores co on al.coreid = co.coreid " + + "WHERE al.coreid = ($1) ORDER BY al.published_at DESC LIMIT 30;" + client.query(coreMsgQry, [coreId], function(err, result) { + //call `done()` to release the client back to the pool + done(); + + if(err) { + return console.error('error running query', err); + } // Loop over elements in rows array, convert ugly UTC times to pretty local times. - rows.forEach(function(row){ - row.pubDate = alertmonUtils.getLocDateFromUTC(row.published_at); - row.pubTime = alertmonUtils.getLocTimeFromUTC(row.published_at); + result.rows.forEach(function(row){ + row.pubdate = alertmonUtils.getLocDateFromUTC(row.published_at); + row.pubtime = alertmonUtils.getLocTimeFromUTC(row.published_at); if(row.status.toLowerCase().indexOf('alert') > -1){ - row.rowClass = 'alert-row'; - } else { row.rowClass = 'non-alert-row'; } + row.rowclass = 'alert-row'; + } else { row.rowclass = 'non-alert-row'; } }); - res.render('core', {alerts: rows}, function(err, html) { - res.send(html); + res.render('core', {alerts: result.rows}, function(err, html) { + if(err !== null) { + console.log(err); + } else { + res.send(html); + } }); - } + }); }); }); @@ -201,14 +199,14 @@ app.post('/', function(req, res){ var status = JSON.stringify(innerDataJSON.status, null, 4).slice(1,-1); var coreid = JSON.stringify(req.body.coreid, null, 4).slice(1,-1); var pubAt = JSON.stringify(req.body.published_at, null, 4).slice(1,-1); - var stmt = db.prepare("INSERT INTO Alerts (OrigJSON, coreid, published_at, status) VALUES (?, ?, ?, ?)"); - stmt.run( - JSON.stringify(req.body, null, 4), - coreid, - pubAt, - status - ); - stmt.finalize(); + + pg.connect(conString, function(err, client, done) { + if(err) { return console.error('error fetching client from pool', err); } + client.query( + "INSERT INTO alerts (origjson, coreid, published_at, status) VALUES ($1, $2, $3, $4);", + [JSON.stringify(req.body, null, 4), coreid, pubAt, status] + ); + }); // Send emails on alerts only if(status.toLowerCase().indexOf('alert') > -1){ @@ -216,20 +214,22 @@ app.post('/', function(req, res){ mailOptions.text = mailOptions.text + 'Status message, ' + status + '\n'; mailOptions.text = mailOptions.text + 'Published at, ' + alertmonUtils.getLocDateFromUTC(pubAt) + ' ' + alertmonUtils.getLocTimeFromUTC(pubAt) + '\n'; //mailOptions.text = mailOptions.text + 'From device, ' + alertmonUtils.getCoreNameFromCoreId(db, coreid) + '\n'; - var nameQry = 'SELECT coreName FROM Cores WHERE coreId = ?;' - db.get(nameQry, coreid, function(err, row){ - if ((err) || (typeof row == undefined)) { - // Don't care about this error or empty result set, still need to send email. - row.coreName = '# No Name #'; - } - mailOptions.text = mailOptions.text + 'From device, ' + row.coreName + '\n'; - - transporter.sendMail(mailOptions, function(error, info){ - if(error){ - console.log(error); - }else{ - console.log('Message sent: ' + info.response); + pg.connect(conString, function(err, client, done) { + if(err) { return console.error('error fetching client from pool', err); } + client.query('SELECT corename FROM cores WHERE coreid = $1;', [coreid], function(err, result) { + if ((err) || (typeof result == undefined)) { + // Don't care about this error or empty result set, still need to send email. + result.rows[0].corename = '# No Name #'; } + mailOptions.text = mailOptions.text + 'From device, ' + result.rows[0].corename + '\n'; + + transporter.sendMail(mailOptions, function(error, info){ + if(error){ + console.log(error); + }else{ + console.log('Message sent: ' + info.response); + } + }); }); }); } diff --git a/views/core.hbs b/views/core.hbs index 4f297fb..2841aeb 100644 --- a/views/core.hbs +++ b/views/core.hbs @@ -3,14 +3,14 @@

{{! Grab 1st coreName value (it will be same value for entire set).}} - {{#if alerts.0.coreName}} - Alerts from Particle Core: {{alerts.0.coreName}} + {{#if alerts.0.corename}} + Alerts from Particle Core: {{alerts.0.corename}} {{else}} Alerts from Particle Core: # No Name # {{/if}} - Edit Details + Edit Details Back to Device Listing

@@ -24,9 +24,9 @@ {{#each alerts}} - - {{this.pubDate}} - {{this.pubTime}} + + {{this.pubdate}} + {{this.pubtime}} {{this.status}} {{/each}}