Always merging events and notes

This commit is contained in:
Selim Mustafaev 2022-03-19 23:50:55 +03:00
parent 50b1956937
commit 6d57210b7e
3 changed files with 38 additions and 17 deletions

View File

@ -19,10 +19,7 @@ let dotenvConf = dotenv.config();
dotenvExpand(dotenvConf); dotenvExpand(dotenvConf);
app.use(responseTime(function (req, res, time) { app.use(responseTime(function (req, res, time) {
var stat = (req.method + req.url).toLowerCase() console.log(`${req.method} ${req.originalUrl} - [${time} ms]`);
.replace(/[:.]/g, '')
.replace(/\//g, '_');
console.log(`${stat} - ${time}`);
})); }));
app.use(compression()); app.use(compression());

View File

@ -167,24 +167,32 @@ class Vehicle {
} }
mergeNotes(newNotes) { mergeNotes(newNotes) {
if(this.notes) { Vehicle.mergeNotes(this, newNotes);
let map = new Map();
this.notes.forEach(item => map.set(item.id, item));
newNotes.forEach(item => map.set(item.id, item));
this.notes = [...map.values()];
} else {
this.notes = newNotes;
}
} }
mergeEvents(newEvents) { mergeEvents(newEvents) {
if(this.events) { Vehicle.mergeEvents(this, newEvents);
}
static mergeEvents(vehicle, newEvents) {
if(vehicle.events) {
let map = new Map(); let map = new Map();
this.events.forEach(item => map.set(item.id, item)); vehicle.events.forEach(item => map.set(item.id, item));
newEvents.forEach(item => map.set(item.id, item)); newEvents.forEach(item => map.set(item.id, item));
this.events = [...map.values()]; vehicle.events = [...map.values()];
} else { } else {
this.events = newEvents; vehicle.events = newEvents;
}
}
static mergeNotes(vehicle, newNotes) {
if(vehicle.notes) {
let map = new Map();
vehicle.notes.forEach(item => map.set(item.id, item));
newNotes.forEach(item => map.set(item.id, item));
vehicle.notes = [...map.values()];
} else {
vehicle.notes = newNotes;
} }
} }
} }

View File

@ -10,6 +10,7 @@ const NomerogramProvider = require('../data_providers/nomerogram');
const Utils = require('../utils/utils'); const Utils = require('../utils/utils');
const ObjectId = require('mongodb').ObjectID; const ObjectId = require('mongodb').ObjectID;
const DebugInfo = require('../models/DebugInfo'); const DebugInfo = require('../models/DebugInfo');
const Vehicle = require('../models/vehicle');
const makeError = error => ({ success: false, error }); const makeError = error => ({ success: false, error });
@ -25,7 +26,22 @@ router.post('/check', async (req, res) => {
if(vehicles.length > 0 && !forceUpdate) { if(vehicles.length > 0 && !forceUpdate) {
console.log('vehicle found in database'); console.log('vehicle found in database');
let updatedDate = Date.now(); let updatedDate = Date.now();
await collection.updateOne({ number }, { $set: { updatedDate } });
if(notes) {
Vehicle.mergeNotes(vehicles[0], notes);
}
if(events) {
Vehicle.mergeEvents(vehicles[0], events);
}
await collection.updateOne({ number }, {
$set: {
updatedDate,
events: vehicles[0].events,
notes: vehicles[0].notes
}
});
vehicles[0].updatedDate = updatedDate; vehicles[0].updatedDate = updatedDate;
res.send({ success: true, data: vehicles[0] }); res.send({ success: true, data: vehicles[0] });
} else { } else {