New filters - addedBy and date range
This commit is contained in:
parent
ef3f54c489
commit
e2a4c9c30f
@ -71,8 +71,10 @@ router.put('/', async (req, res) => {
|
||||
});
|
||||
|
||||
router.get('/', async (req, res) => {
|
||||
const { email } = req.user;
|
||||
|
||||
try {
|
||||
let finalQuery = Utils.makeVehiclesSearchQuery(req.query);
|
||||
let finalQuery = Utils.makeVehiclesSearchQuery(req.query, email);
|
||||
let collection = req.db.collection('vehicles');
|
||||
let vehicles = await collection.find(finalQuery, { number: 1, events: 1 }).toArray();
|
||||
let events = [];
|
||||
|
||||
@ -64,9 +64,10 @@ router.post('/check', async (req, res) => {
|
||||
|
||||
router.get('/', async (req, res) => {
|
||||
const { limit } = req.query;
|
||||
const { email } = req.user;
|
||||
|
||||
try {
|
||||
let finalQuery = Utils.makeVehiclesSearchQuery(req.query);
|
||||
let finalQuery = Utils.makeVehiclesSearchQuery(req.query, email);
|
||||
let collection = req.db.collection('vehicles');
|
||||
let vehicles = await collection.find(finalQuery).sort({ addedDate: -1 }).limit(parseInt(limit ?? 0)).toArray();
|
||||
res.send({ success: true, data: vehicles });
|
||||
|
||||
35
utils.js
35
utils.js
@ -1,6 +1,6 @@
|
||||
class Utils {
|
||||
static makeVehiclesSearchQuery(queryParams) {
|
||||
const { query, brand, model, color, regions } = queryParams;
|
||||
static makeVehiclesSearchQuery(queryParams, email) {
|
||||
const { query, brand, model, color, regions, fromDate, toDate, addedBy } = queryParams;
|
||||
|
||||
let numberQuery = Utils.makeNumberQuery(query, regions?.split(',') ?? []);
|
||||
let findQuery = {
|
||||
@ -9,7 +9,26 @@ class Utils {
|
||||
color
|
||||
};
|
||||
|
||||
if(fromDate || toDate) {
|
||||
findQuery.addedDate = {};
|
||||
if(fromDate) {
|
||||
findQuery.addedDate.$gte = fromDate*1000;
|
||||
}
|
||||
if(toDate) {
|
||||
findQuery.addedDate.$lte = toDate*1000;
|
||||
}
|
||||
}
|
||||
|
||||
if(addedBy) {
|
||||
if(addedBy == 'me') {
|
||||
findQuery.addedBy = email;
|
||||
} else if(addedBy == 'anyoneButMe') {
|
||||
findQuery.addedBy = { $ne: email };
|
||||
}
|
||||
}
|
||||
|
||||
let findQueryFiltered = Object.fromEntries(Object.entries(findQuery).filter(([,val]) => val ));
|
||||
console.dir(findQueryFiltered);
|
||||
return { ...findQueryFiltered, ...numberQuery };
|
||||
}
|
||||
|
||||
@ -28,6 +47,18 @@ class Utils {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
static makeDateQuery(from, to) {
|
||||
let conditions = [];
|
||||
if(from) {
|
||||
conditions.push({ $gte: from });
|
||||
}
|
||||
if(to) {
|
||||
conditions.push({ $lte: to });
|
||||
}
|
||||
|
||||
return { $and: conditions };
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Utils;
|
||||
Loading…
Reference in New Issue
Block a user