Lis
parent
4fa7ba527b
commit
28673688fb
|
@ -3,8 +3,16 @@ const VehicleModel = require("../model/vehicle.model")
|
||||||
|
|
||||||
//getAll
|
//getAll
|
||||||
module.exports.getAll = (async (req, res)=>{
|
module.exports.getAll = (async (req, res)=>{
|
||||||
const vehicles = await VehicleModel.find();
|
|
||||||
res.status(200).json({success: true, data : vehicles});
|
|
||||||
|
//const vehicles = await VehicleModel.find({ mark: { $regex: search, $options: 'i' }});
|
||||||
|
/*
|
||||||
|
const search = req.query.search
|
||||||
|
const vehicles = await VehicleModel.find({ $or:[{mark: { $regex: search, $options: 'i' }},
|
||||||
|
{model: { $regex: search, $options: 'i' }}, {matricule: { $regex: search, $options: 'i' }}] });
|
||||||
|
*/
|
||||||
|
//res.status(200).json({success: true, data : vehicles});
|
||||||
|
res.status(200).json(res.advancedResults);
|
||||||
})
|
})
|
||||||
|
|
||||||
//getById
|
//getById
|
||||||
|
@ -46,6 +54,6 @@ module.exports.delete = (async (req, res)=>{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await VehicleModel.deleteOne(req.params.id);
|
await VehicleModel.deleteOne({_id:req.params.id});
|
||||||
res.status(200).json({success: true, data :{} });
|
res.status(200).json({success: true, data :{} });
|
||||||
})
|
})
|
|
@ -1,21 +1,27 @@
|
||||||
const express = require("express");
|
const express = require("express");
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
const vehicleController = require("../controller/vehicle.controller")
|
const vehicleController = require("../controller/vehicle.controller");
|
||||||
|
const VehicleModel = require("../model/vehicle.model");
|
||||||
|
const advancedResults = require("../../../shared/middleware/advanced-result")
|
||||||
|
|
||||||
//get All
|
//get All
|
||||||
router.route('/').get(vehicleController.getAll);
|
//router.route('/').get(vehicleController.getAll);
|
||||||
|
|
||||||
|
router
|
||||||
|
.route('/')
|
||||||
|
.get(advancedResults(VehicleModel), vehicleController.getAll) // path , ref et nom de l'entité
|
||||||
|
|
||||||
|
|
||||||
//getById
|
//getById
|
||||||
router.route('/').get(vehicleController.getById);
|
router.route('/:id').get(vehicleController.getById);
|
||||||
|
|
||||||
//create
|
//create
|
||||||
router.route('/').post(vehicleController.create);
|
router.route('/').post(vehicleController.create);
|
||||||
|
|
||||||
//update
|
//update
|
||||||
router.route('/').put(vehicleController.update);
|
router.route('/:id').put(vehicleController.update);
|
||||||
|
|
||||||
//delete
|
//delete
|
||||||
router.route('/').delete(vehicleController.delete);
|
router.route('/:id').delete(vehicleController.delete);
|
||||||
|
|
||||||
module.exports = router
|
module.exports = router
|
|
@ -5,7 +5,8 @@
|
||||||
"main": "server.js",
|
"main": "server.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
"dev": "nodemon server"
|
"dev": "nodemon server",
|
||||||
|
"riche" : "nodemon server"
|
||||||
},
|
},
|
||||||
"author": "Coryas",
|
"author": "Coryas",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
|
||||||
|
const advancedResult =(model)=> async (req, res, next) => {
|
||||||
|
//search : l'information que je cherche
|
||||||
|
//fields : les colonnes je veux utiliser pour la recherche
|
||||||
|
const fields = req.query.fields;
|
||||||
|
const search = req.query.search;
|
||||||
|
let page = req.query.page;
|
||||||
|
let limit = req.query.limit;
|
||||||
|
|
||||||
|
|
||||||
|
let find = {}
|
||||||
|
//Recherche
|
||||||
|
if (fields) {
|
||||||
|
|
||||||
|
//Recherche l'element search dans le tableau de propriété fields
|
||||||
|
const query = {
|
||||||
|
$or: fields.map(property => ({
|
||||||
|
[property]: {$regex: search, $options: 'i'}
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
|
||||||
|
find = {
|
||||||
|
$and: [
|
||||||
|
find,
|
||||||
|
query,
|
||||||
|
]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
//Pagination
|
||||||
|
page = parseInt(page, 10) || 1;
|
||||||
|
limit = parseInt(limit, 10) || 3000;
|
||||||
|
const startIndex = (page - 1) * limit; //1, 1-1 = 0
|
||||||
|
const endIndex = page * limit;
|
||||||
|
const total = await model.find(find).countDocuments();
|
||||||
|
|
||||||
|
//declaration
|
||||||
|
let query = model.find(find);
|
||||||
|
|
||||||
|
query = query.skip(startIndex).limit(limit); // (5,8) 5,6,7,8,9,10,11, 12
|
||||||
|
|
||||||
|
//exécuté
|
||||||
|
let results = await query;
|
||||||
|
const pagination = {};
|
||||||
|
|
||||||
|
if (endIndex < total) {
|
||||||
|
pagination.next = {
|
||||||
|
page: page + 1,
|
||||||
|
limit
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (startIndex > 0) {
|
||||||
|
pagination.prev = {
|
||||||
|
page: page - 1,
|
||||||
|
limit
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
res.advancedResults = {
|
||||||
|
success: true,
|
||||||
|
count: results.length,
|
||||||
|
pagination: pagination,
|
||||||
|
data: results,
|
||||||
|
startIndex: startIndex + 1,
|
||||||
|
endIndex: results.length,
|
||||||
|
totalRecords: total,
|
||||||
|
limit: Number(limit),
|
||||||
|
page: page
|
||||||
|
};
|
||||||
|
next();
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = advancedResult;
|
Loading…
Reference in New Issue