mqtt_server/lib/server/db-mdot.js

126 lines
3.5 KiB
JavaScript
Raw Normal View History

2016-11-13 22:21:18 +00:00
'use strict';
var logger = require('log4js').getLogger();
var Sugar = require('sugar-date');
module.exports = function(db) {
var module = {};
module.deviceIds = ['CENSIS-LoRa-1','CENSIS-LoRa-2','CENSIS-LoRa-3','CENSIS-LoRa-4','HIE-mobile-1','HIE-demo','HIE-mobile-2','HIE-smart-campus-1','HIE-smart-campus-2','HIE-smart-campus-3','HIE-smart-campus-4','HIE-smart-campus-5','HIE-smart-campus-6','HIE-smart-campus-7','HIE-mDot-1'];
module.roomIds = ['CENSIS-LoRa-1','CENSIS-LoRa-2','CENSIS-LoRa-3','CENSIS-LoRa-4'];
module.sqlGetMeetingByRoom = function(roomId,returnObj) {
logger.debug('mdot:sqlGetMeetingByRoom', roomId);
return new Promise(function(resolve, reject) {
db.any('select distinct * from meeting where locationid=$1 order by start asc;', [roomId + 1])
.then(function(d) {
returnObj.occupancy = d;
return resolve(returnObj);
})
.catch((err)=> {
logger.error(err);
return reject(err);
});
});
};
module.sqlAllGetDecoded = function(deviceId) {
logger.debug('mdot:sqlAllGetDecoded');
return new Promise(function(resolve, reject) {
db.any('select distinct * from decoded where deviceid=$1 order by timestamp asc;', [deviceId])
.then(function(d) {
return resolve(d);
})
.catch((err)=> {
logger.error(err);
return reject(err);
});
});
};
module.sqlRangedGetDecoded = function(params) {
logger.debug('mdot:sqlRangedGetDecoded');
return new Promise(function(resolve, reject) {
db.any('select * from decoded where deviceid=$1 and timestamp between $2 and $3 order by timestamp asc;', [params.deviceID, params.startTS, params.endTS])
.then(function(d) {
return resolve(d);
})
.catch((err)=> {
logger.error(err);
return reject(err);
});
});
};
module.doGet = function(params) {
var self = this;
var _obj = {};
var room;
return new Promise(function(resolve, reject) {
logger.debug('mdot.doGet', params);
_obj.deviceID = module.deviceIds.indexOf(params.id);
room = _obj.deviceID;
if (params.hasOwnProperty('start') && params.hasOwnProperty('end')) {
logger.debug('params.start',params.start);
logger.debug('params.start',Sugar.Date.create(params.start));
_obj.startTS = Sugar.Date.create(params.start);
_obj.endTS = Sugar.Date.create(params.end);
logger.info(_obj);
self.sqlRangedGetDecoded(_obj)
.then(function(d) {
self.sqlGetMeetingByRoom(room)
.then(function() {
// nothing done
})
.catch(function(e) {
logger.error(e);
reject(e);
});
resolve(d);
})
.catch(function(e) {
logger.error(e);
reject(e);
});
} else {
self.sqlAllGetDecoded(_obj.deviceID)
.then(function(d) {
var obj = {data: d};
return self.sqlGetMeetingByRoom(room,obj);
})
.then(function(combined) {
resolve(combined);
})
.catch(function(e) {
logger.error(e);
reject(e);
});
}
});
};
return module;
};