master
Smile 2024-08-20 18:14:47 +01:00
parent 4fa7ba527b
commit 28673688fb
4 changed files with 99 additions and 10 deletions

View File

@ -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 :{} });
}) })

View File

@ -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

View File

@ -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",

View File

@ -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;