Update area scan ID after successful export
This commit is contained in:
parent
76bbc43600
commit
1a6af18801
|
@ -333,6 +333,16 @@ function FTNMessageScanTossModule() {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.setAreaLastScanId = function(areaTag, lastScanId, cb) {
|
||||||
|
const sql =
|
||||||
|
`REPLACE INTO message_area_last_scan (scan_toss, area_tag, message_id)
|
||||||
|
VALUES ("ftn_bso", ?, ?);`;
|
||||||
|
|
||||||
|
msgDb.run(sql, [ areaTag, lastScanId ], err => {
|
||||||
|
cb(err);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
this.getNodeConfigKeyForUplink = function(uplink) {
|
this.getNodeConfigKeyForUplink = function(uplink) {
|
||||||
// :TODO: sort by least # of '*' & take top?
|
// :TODO: sort by least # of '*' & take top?
|
||||||
const nodeKey = _.filter(Object.keys(this.moduleConfig.nodes), addr => {
|
const nodeKey = _.filter(Object.keys(this.moduleConfig.nodes), addr => {
|
||||||
|
@ -619,10 +629,8 @@ FTNMessageScanTossModule.prototype.performExport = function(cb) {
|
||||||
return cb(new Error('No valid configurations for export'));
|
return cb(new Error('No valid configurations for export'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// :TODO: Block exporting (e.g. ignore timer) until export is finished
|
|
||||||
|
|
||||||
const getNewUuidsSql =
|
const getNewUuidsSql =
|
||||||
`SELECT message_uuid
|
`SELECT message_id, message_uuid
|
||||||
FROM message
|
FROM message
|
||||||
WHERE area_tag = ? AND message_id > ?
|
WHERE area_tag = ? AND message_id > ?
|
||||||
ORDER BY message_id;`;
|
ORDER BY message_id;`;
|
||||||
|
@ -649,18 +657,24 @@ FTNMessageScanTossModule.prototype.performExport = function(cb) {
|
||||||
if(err) {
|
if(err) {
|
||||||
callback(err);
|
callback(err);
|
||||||
} else {
|
} else {
|
||||||
callback(null, rows.map(r => r.message_uuid)); // convert to simple array of UUIDs
|
if(0 === rows.length) {
|
||||||
|
let nothingToDoErr = new Error('Nothing to do!');
|
||||||
|
nothingToDoErr.noRows = true;
|
||||||
|
callback(nothingToDoErr);
|
||||||
|
} else {
|
||||||
|
callback(null, rows);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
function exportToConfiguredUplinks(msgUuids, callback) {
|
function exportToConfiguredUplinks(msgRows, callback) {
|
||||||
self.exportMessagesToUplinks(msgUuids, areaConfig, err => {
|
const uuidsOnly = msgRows.map(r => r.message_uuid); // conver to array of UUIDs only
|
||||||
// :TODO: Log/handle err
|
self.exportMessagesToUplinks(uuidsOnly, areaConfig, err => {
|
||||||
callback(null, msgUuids[msgUuids.length - 1]);
|
callback(err, msgRows[msgRows.length - 1].message_id);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
function updateLastScanId(newLastScanId, callback) {
|
function updateLastScanId(newLastScanId, callback) {
|
||||||
callback(null);
|
self.setAreaLastScanId(areaTag, newLastScanId, callback);
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
function complete(err) {
|
function complete(err) {
|
||||||
|
@ -673,50 +687,6 @@ FTNMessageScanTossModule.prototype.performExport = function(cb) {
|
||||||
};
|
};
|
||||||
|
|
||||||
FTNMessageScanTossModule.prototype.record = function(message) {
|
FTNMessageScanTossModule.prototype.record = function(message) {
|
||||||
/*
|
|
||||||
if(!_.has(this, 'moduleConfig.nodes') ||
|
|
||||||
!_.has(Config, [ 'messageNetworks', 'ftn', 'areas', message.areaTag ]))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const areaConfig = Config.messageNetworks.ftn.areas[message.areaTag];
|
|
||||||
if(!this.isAreaConfigValid(areaConfig)) {
|
|
||||||
// :TODO: should probably log a warning here
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// For each uplink, find the best configuration match
|
// :TODO: If @immediate, we should do something here!
|
||||||
//
|
|
||||||
areaConfig.uplinks.forEach(uplink => {
|
|
||||||
// :TODO: sort by least # of '*' & take top?
|
|
||||||
const nodeKey = _.filter(Object.keys(this.moduleConfig.nodes), addr => {
|
|
||||||
return Address.fromString(addr).isMatch(uplink);
|
|
||||||
})[0];
|
|
||||||
|
|
||||||
if(nodeKey) {
|
|
||||||
const processOptions = {
|
|
||||||
nodeConfig : this.moduleConfig.nodes[nodeKey],
|
|
||||||
network : Config.messageNetworks.ftn.networks[areaConfig.network],
|
|
||||||
destAddress : Address.fromString(uplink),
|
|
||||||
networkName : areaConfig.network,
|
|
||||||
};
|
|
||||||
|
|
||||||
if(_.isString(processOptions.network.localAddress)) {
|
|
||||||
// :TODO: move/cache this - e.g. @ startup(). Think about due to Config cache
|
|
||||||
processOptions.network.localAddress = Address.fromString(processOptions.network.localAddress);
|
|
||||||
}
|
|
||||||
|
|
||||||
// :TODO: Validate the rest of the matching config -- or do that elsewhere, e.g. startup()
|
|
||||||
|
|
||||||
this.createMessagePacket(message, processOptions);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// :TODO: should perhaps record in batches - e.g. start an event, record
|
|
||||||
// to temp location until time is hit or N achieved such that if multiple
|
|
||||||
// messages are being created a .FTN file is not made for each one
|
|
||||||
*/
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue