import { Router } from 'express'; const router = Router(); import { makeError } from '../utils/errors.js'; router.post('/', async (req, res) => { const { number, notes } = req.body; try { let collection = req.db.collection('vehicles'); await collection.updateOne({ number }, { $push: { notes: { $each: notes } } }); await collection.updateOne({ number }, { $set: { updatedDate: Date.now() } }); let vehicle = await collection.findOne({ number }); if(vehicle) { res.send({ success: true, data: vehicle }); } else { res.send(makeError('There is no vehicle with such plate number')); } } catch(ex) { res.send(makeError(ex.message)); console.error(ex); } }); router.put('/', async (req, res) => { const { note } = req.body; try { let collection = req.db.collection('vehicles'); let vehicle = await collection.findOne({ 'notes.id': note.id }); if(vehicle) { let index = vehicle.notes.findIndex(e => e.id == note.id); if(index >= 0) { vehicle.notes[index] = note; await collection.updateOne({ number: vehicle.number }, { $set: { notes: vehicle.notes, updatedDate: Date.now() } }); res.send({ success: true, data: vehicle }); } else { res.send(makeError('Note not found')); } } else { res.send(makeError('There is no vehicle with such note')); } } catch(ex) { res.send(makeError(ex.message)); console.error(ex); } }); router.delete('/', async (req, res) => { const { noteId } = req.body; try { let collection = req.db.collection('vehicles'); let vehicle = await collection.findOne({ 'notes.id': noteId }); if(vehicle) { let index = vehicle.notes.findIndex(e => e.id == noteId); if(index >= 0) { vehicle.notes.splice(index, 1); await collection.updateOne({ number: vehicle.number }, { $set: { notes: vehicle.notes, updatedDate: Date.now() } }); } res.send({ success: true, data: vehicle }); } else { res.send(makeError('There is no vehicle with such note')); } } catch(ex) { res.send(makeError(ex.message)); console.error(ex); } }); export default router;