Skip to content

Commit

Permalink
Making sure there is no duplications in local db
Browse files Browse the repository at this point in the history
  • Loading branch information
javo committed Jul 16, 2017
1 parent d394c5b commit 4d70eb4
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 21 deletions.
29 changes: 16 additions & 13 deletions lib/agent/triggers/geofencing/index.js
Expand Up @@ -92,27 +92,30 @@ var GeofenceTrigger = function(options) {

storage.update(self.id, self.name, self.state, 'outside', function(err) {
if (err) logger.error(err);
else {
if (self.state == 'inside' && self.direction !== 'in') {
logger.info('Device left the geofence ' + self.name + '! Notifying')
self.emit('left_geofence', last_location);
}

self.state = 'outside';
}
});

if (self.state == 'inside' && self.direction !== 'in') {
logger.info('Device left the geofence ' + self.name + '! Notifying')
self.emit('left_geofence', last_location);
}

self.state = 'outside';

} else { // inside

storage.update(self.id, self.name, self.state, 'inside', function(err) {
if (err) logger.error(err);
else {
if ((self.state == 'outside' && self.direction !== 'out') || self.state == null) {
logger.info('Device got inside the geofence ' + self.name + '! Notifying')
self.emit('entered_geofence', last_location);
}

self.state = 'inside';
}
});

if ((self.state == 'outside' && self.direction !== 'out') || self.state == null) {
logger.info('Device got inside the geofence ' + self.name + '! Notifying')
self.emit('entered_geofence', last_location);
}

self.state = 'inside';
}
}
}
Expand Down
21 changes: 13 additions & 8 deletions lib/agent/utils/storage.js
Expand Up @@ -74,14 +74,19 @@ var remove = function(type, cb) {
}

var save = function(type, add, cb) {
var stmt = db_comm.prepare(queries.INSERT(type));
var to_add = new Buffer(JSON.stringify(add, null, 0)).toString('base64');

stmt.run(to_add, function(err) {
var e = err && err.code == 'SQLITE_READONLY' ? SQLITE_ACCESS_ERR : err
stmt.finalize();
return cb && cb(e);
});
load(type, function(err, db) {
if (db[Object.keys(add)])
return cb(new Error("The registry already exists"));

var stmt = db_comm.prepare(queries.INSERT(type));
var to_add = new Buffer(JSON.stringify(add, null, 0)).toString('base64');

stmt.run(to_add, function(err) {
var e = err && err.code == 'SQLITE_READONLY' ? SQLITE_ACCESS_ERR : err
stmt.finalize();
return cb && cb(e);
});
})
}

var drop = function(type, del, cb) {
Expand Down

0 comments on commit 4d70eb4

Please sign in to comment.