From 6d57210b7e76aef53dac0111016bf07a30bdd7f0 Mon Sep 17 00:00:00 2001 From: Selim Mustafaev Date: Sat, 19 Mar 2022 23:50:55 +0300 Subject: [PATCH] Always merging events and notes --- index.js | 5 +---- models/vehicle.js | 32 ++++++++++++++++++++------------ routes/vehicles.js | 18 +++++++++++++++++- 3 files changed, 38 insertions(+), 17 deletions(-) diff --git a/index.js b/index.js index cdd8a59..e4e1560 100644 --- a/index.js +++ b/index.js @@ -19,10 +19,7 @@ let dotenvConf = dotenv.config(); dotenvExpand(dotenvConf); app.use(responseTime(function (req, res, time) { - var stat = (req.method + req.url).toLowerCase() - .replace(/[:.]/g, '') - .replace(/\//g, '_'); - console.log(`${stat} - ${time}`); + console.log(`${req.method} ${req.originalUrl} - [${time} ms]`); })); app.use(compression()); diff --git a/models/vehicle.js b/models/vehicle.js index 6898ca7..5897193 100644 --- a/models/vehicle.js +++ b/models/vehicle.js @@ -167,24 +167,32 @@ class Vehicle { } mergeNotes(newNotes) { - if(this.notes) { - 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; - } + Vehicle.mergeNotes(this, newNotes); } mergeEvents(newEvents) { - if(this.events) { + Vehicle.mergeEvents(this, newEvents); + } + + static mergeEvents(vehicle, newEvents) { + if(vehicle.events) { 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)); - this.events = [...map.values()]; + vehicle.events = [...map.values()]; } 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; } } } diff --git a/routes/vehicles.js b/routes/vehicles.js index a981158..6bffa47 100644 --- a/routes/vehicles.js +++ b/routes/vehicles.js @@ -10,6 +10,7 @@ const NomerogramProvider = require('../data_providers/nomerogram'); const Utils = require('../utils/utils'); const ObjectId = require('mongodb').ObjectID; const DebugInfo = require('../models/DebugInfo'); +const Vehicle = require('../models/vehicle'); const makeError = error => ({ success: false, error }); @@ -25,7 +26,22 @@ router.post('/check', async (req, res) => { if(vehicles.length > 0 && !forceUpdate) { console.log('vehicle found in database'); 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; res.send({ success: true, data: vehicles[0] }); } else {