107 lines
2.4 KiB
JavaScript
107 lines
2.4 KiB
JavaScript
'use strict';
|
|
var logger = require('log4js').getLogger();
|
|
|
|
var Sugar = require('sugar/date');
|
|
|
|
|
|
|
|
module.exports = function(db) {
|
|
var module = {};
|
|
|
|
|
|
module.sqlGetAllRaw = function(type, deviceId) {
|
|
return new Promise(function(resolve, reject) {
|
|
db.any('select distinct on (raw.timestamp) * from raw where type=$1 and device=$2 order by timestamp asc;', [type,deviceId])
|
|
.then(function(d) {
|
|
return resolve(d);
|
|
})
|
|
.catch((err)=> {
|
|
logger.error(err);
|
|
return reject(err);
|
|
});
|
|
});
|
|
};
|
|
|
|
module.sqlGetRangedRaw = function(params) {
|
|
return new Promise(function(resolve, reject) {
|
|
db.any('select distinct on (raw.timestamp) * from raw where type=$1 and device=$2 and timestamp between $3 and $4 order by timestamp asc;', [params.type, params.device, 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 useRange=false;
|
|
return new Promise(function(resolve, reject) {
|
|
logger.debug('historian.doGet', params);
|
|
|
|
|
|
_obj.type = params.type;
|
|
_obj.device = params.device;
|
|
|
|
if (params.hasOwnProperty('start') && params.hasOwnProperty('end')) {
|
|
|
|
try{
|
|
_obj.startTS = new Sugar.Date(parseInt(params.start,10)).raw;
|
|
_obj.endTS = new Sugar.Date(parseInt(params.end,10)).raw;
|
|
useRange = true;
|
|
}
|
|
catch(err)
|
|
{
|
|
logger.error(err);
|
|
useRange = false;
|
|
}
|
|
|
|
if ((_obj.start === null) || (_obj.end === null))
|
|
{
|
|
useRange = false;
|
|
}
|
|
|
|
}
|
|
|
|
if (useRange) {
|
|
|
|
logger.info('Userange:',_obj);
|
|
|
|
self.sqlGetRangedRaw(_obj)
|
|
.then(function(d) {
|
|
resolve(d);
|
|
})
|
|
.catch(function(e) {
|
|
logger.error(e);
|
|
reject(e);
|
|
});
|
|
|
|
} else {
|
|
|
|
self.sqlGetAllRaw(_obj.type, _obj.device)
|
|
.then(function(d) {
|
|
resolve(d);
|
|
})
|
|
.catch(function(e) {
|
|
logger.error(e);
|
|
reject(e);
|
|
});
|
|
|
|
}
|
|
|
|
|
|
});
|
|
};
|
|
|
|
|
|
return module;
|
|
};
|
|
|