40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const AvtocodProvider = require('../data_providers/avtocod');
|
|
|
|
const makeError = error => ({ success: false, error });
|
|
|
|
router.post('/check', async (req, res) => {
|
|
const { number } = req.body;
|
|
const { login } = req.user;
|
|
|
|
let collection = req.db.collection('vehicles');
|
|
let vehicles = await collection.find({ number }).toArray();
|
|
if(vehicles.length > 0) {
|
|
res.send({ success: true, data: vehicles[0] });
|
|
} else {
|
|
try {
|
|
let vehicle = await AvtocodProvider.getReport(number);
|
|
vehicle.addedBy = login;
|
|
await collection.insertOne(vehicle);
|
|
res.status(201).send({ success: true, data: vehicle });
|
|
} catch(ex) {
|
|
res.send(makeError('Error getting report'));
|
|
console.error(ex);
|
|
}
|
|
}
|
|
});
|
|
|
|
router.get('/', async (req, res) => {
|
|
const { limit } = req.query;
|
|
try {
|
|
let collection = req.db.collection('vehicles');
|
|
let vehicles = await collection.find().sort({ addedDate: -1 }).limit(parseInt(limit)).toArray();
|
|
res.send({ success: true, data: vehicles });
|
|
} catch(ex) {
|
|
res.send(makeError('Error reading vehicles from DB'));
|
|
console.error(ex);
|
|
}
|
|
});
|
|
|
|
module.exports = router; |