var express = require('express'), fs = require('fs'), sqlite3 = require('sqlite3').verbose(); var EventEmitter = require('events'); var log4js = require('log4js'); var logger = log4js.getLogger(); var router = express.Router(); var EventEmitter = require('events'); var busEmitter = new EventEmitter(); var temp_db; var file = process.env.DB_HOME + '/' + "temp.db"; var exists; /* GET users listing. */ function createDB() { logger.debug('Creating Temp db...'); logger.debug(file); if (!fs.existsSync(file)) { logger.debug('creating db file'); fs.openSync(file, 'w'); temp_db = new sqlite3.Database(file, createTable); temp_db.close(); } else { logger.info('Database already created.'); connectDB(); } } function startEventHandler() { "use strict"; } function connectDB() { "use strict"; logger.debug('Connect db.'); temp_db = new sqlite3.Database(file); console.log(temp_db); return temp_db; } function createTable() { logger.debug('Creating temp table...'); temp_db.run('CREATE TABLE IF NOT EXISTS temp (date text, reading real);'); } function closeDB() { "use strict"; console.log('Closing db.'); temp_db.close(); } function insertTempReading(time, reading) { console.log('Inserting reading:' + reading); // var sql = db.prepare('INSERT into temperature(date, reading) VALUES // (?,?)',[time],[reading]); temp_db.run('BEGIN TRANSACTION'); temp_db.run('INSERT into temp(date, reading) VALUES (?,?);', [time, reading]); // temp_db.run('END'); temp_db.run('commit'); } /*router.get('/', function (req, res, next) { var now = new Date(); var t = req.query; console.log('t:'); console.log(JSON.stringify(t)); if (req.query != {} && req.query.temp != null) { // createDB(); res.writeHead(200, {"ContentType": "text/html"}); //res.send(JSON.stringify(t)); res.end('ok'); } else { res.writeHead(200, {"ContentType": "text/html"}); //res.send(JSON.stringify(t)); res.end('error?'); } });*/ /*router.get('/:id', function (req, res, next) { var id = req.params.id; console.log('id: ' + id); res.writeHead(200, {"ContentType": "text/html"}); //res.send(JSON.stringify(t)); res.end('ok'); });*/ router.get('/reading', function (req, res, next) { var now = new Date(); var t = req.query; console.log('t:'); console.log(JSON.stringify(t)); res.writeHead(200, {"ContentType": "application/json"}); //res.send(JSON.stringify(t)); res.end(JSON.stringify({})); }); router.post('/', function (req, res, next) { "use strict"; var t = req.body; var now = new Date(); var dataJSON={}; console.log('~~~~'); logger.debug(t); console.log(typeof t); //t = JSON.parse(t); if(t.hasOwnProperty('data')){ logger.debug('We have data'); var data = t.data; logger.debug(data); /* var data = t.data; dataJSON = JSON.parse(data); if(dataJSON.hasOwnProperty('temp')) { } else { logger.error('No temp data!'); }*/ } else { logger.error('No data block!'); } console.log(JSON.stringify(t)); if (dataJSON != {} && dataJSON.temp != null) { busEmitter.emit("saveTempData", {time: now.toJSON(), value: parseFloat(dataJSON.temp)}); } res.writeHead(200, {"ContentType": "text/html"}); res.end('ok'); }); router.get('/all', function (req, res, next) { "use strict"; console.log('Selecint all..'); var db = connectDB(); db.all('SELECT * from temp', function (err, rows) { var out = []; console.log(err); console.log(rows); rows.forEach(function (row) { console.log(row.date + ', ' + row.reading); // var t = ; // out.push({"date": Date(row.date), "reading":row.reading}); out.push({"date": row.date, "reading": row.reading}); }); res.writeHead(200, {"ContentType": "application/json"}); //res.send(JSON.stringify(t)); res.end(JSON.stringify(out)); //closeDB(); }); }); module.exports = router; createDB(); var sendSocketHandler = (obj) => { // logger.info('sendSocket: ' + JSON.stringify(obj)); insertTempReading(obj.time, obj.value); } busEmitter.on('saveTempData', sendSocketHandler);