backend: Chercher par catégorie et recherche
This commit is contained in:
parent
cb3ca25aac
commit
404af8be6a
BIN
backend/assets/images/functions/convertCurrency.png
Normal file
BIN
backend/assets/images/functions/convertCurrency.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 111 KiB |
@ -3,22 +3,36 @@ const { serverError } = require('../assets/config/errors');
|
|||||||
const Functions = require('../models/functions');
|
const Functions = require('../models/functions');
|
||||||
const Categories = require('../models/categories');
|
const Categories = require('../models/categories');
|
||||||
const functionToExecute = require('../assets/functions/functionObject');
|
const functionToExecute = require('../assets/functions/functionObject');
|
||||||
|
const Sequelize = require('sequelize');
|
||||||
|
|
||||||
|
function helperQueryNumber(value, defaultValue) {
|
||||||
|
if (value && !isNaN(value)) return parseInt(value);
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
exports.getFunctions = (req, res, next) => {
|
exports.getFunctions = (req, res, next) => {
|
||||||
// TODO: Trier et chercher par catégories
|
const page = helperQueryNumber(req.query.page, 1);
|
||||||
let page = 1;
|
const limit = helperQueryNumber(req.query.limit, 10);
|
||||||
let limit = 10;
|
const categoryId = helperQueryNumber(req.query.categoryId, 0);
|
||||||
if (req.query.page && !isNaN(req.query.page)) {
|
let search = req.query.search;
|
||||||
page = parseInt(req.query.page);
|
try { search = search.toLowerCase(); } catch {}
|
||||||
}
|
|
||||||
if (req.query.limit && !isNaN(req.query.limit)) {
|
|
||||||
limit = parseInt(req.query.limit);
|
|
||||||
}
|
|
||||||
const offset = (page - 1) * limit;
|
const offset = (page - 1) * limit;
|
||||||
Functions.findAndCountAll({
|
Functions.findAndCountAll({
|
||||||
limit,
|
limit,
|
||||||
offset,
|
offset,
|
||||||
where: { isOnline: 1 },
|
where: {
|
||||||
|
isOnline: 1,
|
||||||
|
// Trie par catégorie
|
||||||
|
... (categoryId !== 0) && { categorieId: categoryId },
|
||||||
|
// Recherche
|
||||||
|
... (search != undefined) && {
|
||||||
|
[Sequelize.Op.or]: [
|
||||||
|
{ title: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('title')), 'LIKE', `%${search}%`) },
|
||||||
|
{ slug: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('slug')), 'LIKE', `%${search}%`) },
|
||||||
|
{ description: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('description')), 'LIKE', `%${search}%`) }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
include: [
|
include: [
|
||||||
{ model: Categories, attributes: ["name", "color"] }
|
{ model: Categories, attributes: ["name", "color"] }
|
||||||
]
|
]
|
||||||
|
@ -55,4 +55,5 @@
|
|||||||
border-radius: 0.5em;
|
border-radius: 0.5em;
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
|
font-size: 16.4px;
|
||||||
}
|
}
|
Reference in New Issue
Block a user