const { schema2pid } = require('../lib/db/connection'); const { listen } = require('../ws/db'); const { event } = require('../lib/db'); function start () { let prevPos = null; listen(["realtime"], function (data) { if (!(data.payload && data.payload.new && data.payload.new.meta)) { console.log("Wrong event", data); return; } const pos = data.payload.new.meta; if (prevPos) { if (pos.lineStatus == "online") { if (prevPos.lineStatus != "online") { // FIXME TODO Check if there are already FSP, FGSP events for this sequence // Tag this as FSP/FGSP const remarks = `SEQ ${pos._sequence}, SOL ${pos.lineName}, BSP: ${(pos.speed*3.6/1.852).toFixed(1)} kt, Water depth: ${Number(pos.waterDepth).toFixed(0)} m.`; const payload = { type: "sequence", sequence: pos._sequence, point: pos._point, remarks, labels: [ "FSP", "FGSP" ] } schema2pid(pos._schema).then(projectId => event.post(projectId, payload)); // console.log("post fsp", pos._schema); } } else { if (prevPos.lineStatus == "online") { // FIXME TODO Check if there are already LSP, LGSP events for this sequence // Tag this as LSP/LGSP const remarks = `SEQ ${prevPos._sequence}, EOL ${prevPos.lineName}, BSP: ${(prevPos.speed*3.6/1.852).toFixed(1)} kt, Water depth: ${Number(prevPos.waterDepth).toFixed(0)} m.`; const payload = { type: "sequence", sequence: prevPos._sequence, point: prevPos._point, remarks, labels: [ "LSP", "LGSP" ] } schema2pid(prevPos._schema).then(projectId => event.post(projectId, payload)); // console.log("post lsp", prevPos._schema); } } } prevPos = JSON.parse(JSON.stringify(pos)); }); console.log("Events manager started"); } module.exports = { start }