tracking added

This commit is contained in:
Martin Donnelly 2016-08-12 14:07:22 +01:00
parent 5ca1e2cfb6
commit fc077bd8e1
5 changed files with 174 additions and 0 deletions

2
app.js
View File

@ -30,6 +30,7 @@ var isProduction = false;
var mdotApi = require('./lib/mdot/api.js');
var mdotApiV2 = require('./lib/mdot/apiv2.js');
var trackApi = require('./lib/mdot/track.js');
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
@ -81,6 +82,7 @@ function originIsAllowed(origin) {
// glue routes
mdotApi(app);
mdotApiV2(app);
trackApi(app);
//app.get('/api/mdot/:id', mDot.getData);

50
lib/mdot/track.js Normal file
View File

@ -0,0 +1,50 @@
/**
*
* User: Martin Donnelly
* Date: 2016-08-12
* Time: 13:41
*
*/
'use strict';
var logger = require('log4js').getLogger();
var mdot = require('./mdot.js');
var db = require('../server/db-connector').dbConnection;
var dbTrack = require('../server/db-track')(db);
module.exports = function(app) {
var express = require('express');
var mdotRouter = express.Router();
mdotRouter.post('/', function(req, res) {
var data = {};
if (!req.body.hasOwnProperty('locationid') || !req.body.hasOwnProperty('count') || !req.body.hasOwnProperty('total')) {
logger.error('MDot','Missing required parameter');
res.status(400).send({
status: 'error',
error: 'missing required parameter'
});
return;
} else {
data.locationid = req.body.locationid;
data.count = req.body.count;
data.total = req.body.total;
dbTrack.addNewTrack(data)
.then((d) => {
res.json({d: d});
})
.catch((e) => {
logger.error(e);
res.status(500).json({});
});
}
});
app.use('/apiv2/track/', mdotRouter);
};

51
lib/server/db-track.js Normal file
View File

@ -0,0 +1,51 @@
'use strict';
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.sqlInsertTrack = function(data) {
let _data = data;
console.log('sqlInsertTrack', _data.locationid, _data.timestamp);
return new Promise(function(resolve, reject) {
db.func('insert_track',
[_data.locationid, _data.timestamp, _data.count, _data.total])
.then(()=> {
return resolve('ok');
})
.catch((err)=> {
return reject(err);
});
});
};
module.addNewTrack = function(data) {
console.log('addNewTrack');
var self = this;
return new Promise((resolve, reject) => {
let _data = {};
_data.timestamp = new Date();
_data.locationid = data.locationid;
_data.count = data.count;
_data.total = data.total;
self.sqlInsertTrack(_data)
.then((d)=> {
console.log('Postgres returns', d);
return resolve({reply: 'track inserted'});
})
.catch((err)=> {
return reject(err);
});
});
};
return module;
};

54
server/dbconfig.js Normal file
View File

@ -0,0 +1,54 @@
/**
*
* User: Martin Donnelly
* Date: 2016-04-04
* Time: 14:46
*
*/
var exec = require('child_process').exec;
function run_script() {
'use strict';
exec('psql -Upostgres -d mdot -h localhost -f ./new.sql', function(err) {
if (err !== null) {
console.log('exec error: ' + err);
return -1;
} else {
addUsers();
}
});
}
function prepare_db() {
exec('psql -Upostgres -d oBrand -h localhost -f ./obrand.sql', function(err) {
if (err !== null) {
console.log('exec error: ' + err);
return -1;
} else {
addUsers();
}
});
}
function createDB() {
'use strict';
exec('createdb -Upostgres -h localhost oBrand', function(err) {
if (err !== null) {
console.log('exec error: ' + err);
return -1;
} else {
prepare_db();
}
});
}
// createDB();
run_script();

17
server/insert_track.sql Normal file
View File

@ -0,0 +1,17 @@
CREATE OR REPLACE FUNCTION public.insert_track(
_locationid integer,
_logged timestamp with time zone,
_count smallint,
_total integer)
RETURNS void AS
$BODY$
BEGIN
INSERT into track(locationid, logged, count, total) Values( _locationid, _logged, _count, _total);
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION public.insert_track(integer, timestamp with time zone, smallint, integer)
OWNER TO postgres;