AutoCatBackend/routes/notes.js

70 lines
2.0 KiB
JavaScript

const express = require('express');
const router = express.Router();
const { makeError } = require('../utils/errors');
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);
}
});
module.exports = router;