Files
ETAApi/lib/Misc.js
Josepablo C. 857a8bf18b fix(Pagination): Improve performance of pagination
- Add limit parameter to find method.
 - Set absolute pagination elements limit to 1000.
 - Adding pagination validation, do not accept negative values. If
   negative values are detected, default parameters are used.
2023-10-05 23:27:30 -06:00

34 lines
706 B
JavaScript

"use strict";
function getPagination( query ){
let limit = {
page : 0,
elements : 10
};
if( query.page ){
limit.page = parseInt( query.page ) || 0;
}
if( query.elements ){
limit.elements = parseInt( query.elements ) || 10;
/** Safe pagination limit */
if( limit.elements > 1000 ){
limit.elements = 1000;
}
}
return limit;
}
async function queryPage( page , elements , model ){
const skip = elements * page;
const total = await model.count();
const list = await model.find( null , null, { skip : skip , limit : elements } );
return {
total : total,
limit : elements,
skip : skip,
data : list
}
}
module.exports = { getPagination , queryPage };