40 lines
814 B
JavaScript
40 lines
814 B
JavaScript
"use strict";
|
|
|
|
function getPagination( query ){
|
|
let limit = {
|
|
page : 0,
|
|
elements : 10
|
|
};
|
|
|
|
if( query.page ){
|
|
limit.page = parseInt( query.page ) || 0;
|
|
if( limit.page < 0 ){
|
|
limit.page = 0;
|
|
}
|
|
}
|
|
if( query.elements ){
|
|
limit.elements = parseInt( query.elements ) || 10;
|
|
/** Safe pagination limit */
|
|
if( limit.elements > 1000 ){
|
|
limit.elements = 1000;
|
|
}
|
|
else if( limit.elements < 0 ){
|
|
limit.elements = 10;
|
|
}
|
|
}
|
|
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 }; |