Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

lucis-api-query

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

lucis-api-query - npm Package Compare versions

Comparing version 0.0.2 to 0.0.3

README_MONGOOSE_PAGINATE.md

117

index.js
function pluginMongoose (schema) {
schema.statics.getSearchParams = function(rawParams) {
function getSearchParams (rawParams) {

@@ -163,4 +163,4 @@ var model = this;

let populate = options.populate;
let lean = options.lean || false;
let leanWithId = options.leanWithId ? options.leanWithId : true;
let lean = options.lean || true;
let leanWithId = options.leanWithId || true;
let limit = options.limit ? options.limit : 10;

@@ -226,53 +226,90 @@ let page, offset, skip, promises;

}
/**
* Função que efetivamente será chamada pelo serviço/router
*/
schema.statics.lucisApiQuery = function(callback){
// TODO: O mongoose-paginate não trata erros, tem que adicionar isso e tratar aqui também
return (req, res) => {
const lucisApiData = getDataFromReq(req, res);
const parsedParams = getSearchParams(req.query);
this.paginate(parsedParams, lucisApiData, (data)=>{
if (callback){
return callback(req, res, data);
}
return res.json(data);
});
};
};
};
// TODO: tornar ou tudo inglês ou portugues para não precisar aquelas funções util
function middlewareExpress (req, res, next) {
req.query.pagina = (typeof req.query.pagina === 'string') ? parseInt(req.query.pagina, 10) || 1 : 1;
/**
* Maps the sent params regarding pagination to its own object and removes them from the request params
*
* @param {*} req
* @param {*} res
* @param {*} next
*/
function getDataFromReq (req, res) {
// Data regarding pagination
req.query.page = (typeof req.query.page === 'string') ? parseInt(req.query.page, 10) || 1 : 1;
req.query.resultadosPorPagina = (typeof req.query.resultadosPorPagina === 'string') ? parseInt(req.query.resultadosPorPagina, 10) || 0 : 10;
req.query.limit = (typeof req.query.limit === 'string') ? parseInt(req.query.limit, 10) || 0 : 10;
if (req.query.resultadosPorPagina > 50)
req.query.resultadosPorPagina = 50;
if (req.query.limit > 50)
req.query.limit = 50;
if (req.query.pagina < 1)
req.query.pagina = 1;
if (req.query.page < 1)
req.query.page = 1;
if (req.query.resultadosPorPagina < 0)
req.query.resultadosPorPagina = 0;
if (req.query.limit < 0)
req.query.limit = 0;
req.skip = req.offset = (req.query.pagina * req.query.resultadosPorPagina) - req.query.resultadosPorPagina;
req.skip = req.offset = (req.query.page * req.query.limit) - req.query.limit;
res.locals.paginacao = {};
res.locals.paginacao.skip = req.skip;
res.locals.paginacao.pagina = req.query.pagina;
res.locals.paginacao.resultadosPorPagina = req.query.resultadosPorPagina
const lucisApiData = {};
lucisApiData.skip = req.skip;
lucisApiData.page = req.query.page;
lucisApiData.limit = req.query.limit
delete req.query.pagina;
delete req.query.resultadosPorPagina;
next();
};
delete req.query.page;
delete req.query.limit;
function montaEntidadePaginacao(resposta){
return {
totalDeEntidades: resposta.total,
entidades: resposta.docs,
pagina: resposta.page,
resultadosPorPagina: resposta.limit,
totalDePaginas: resposta.pages
}
};
// Data regarding selection and paginate
const { select, paginate } = req.query;
select = (typeof select === 'string') ? select.replace(',', ' ') : null;
paginate = (typeof paginate === 'string') ? paginate.replace(',', ' ') : null;
function montaConfigPaginacao(paginacao, campos, populate){
return {
page: paginacao.pagina,
limit: paginacao.resultadosPorPagina,
lean: true,
select: campos,
populate: populate
};
lucisApiData.select = req.query.select;
lucisApiData.paginate = req.query.paginate
delete req.query.select;
delete req.query.paginate;
return lucisApiData;
};
const biblioteca = {pluginMongoose, middlewareExpress, montaEntidadePaginacao, montaConfigPaginacao};
// TODO: Não deve ser necessário
// function montaEntidadePaginacao(resposta){
// return {
// totalDeEntidades: resposta.total,
// entidades: resposta.docs,
// pagina: resposta.page,
// resultadosPorPagina: resposta.limit,
// totalDePaginas: resposta.pages
// }
// };
// TODO: Não deve ser necessário
// function montaConfigPaginacao(paginacao, campos, populate){
// return {
// page: paginacao.pagina,
// limit: paginacao.resultadosPorPagina,
// lean: true,
// select: campos,
// populate: populate
// };
// };
const biblioteca = {pluginMongoose};
module.exports = exports = biblioteca;
{
"name": "lucis-api-query",
"version": "0.0.2",
"version": "0.0.3",
"description": "Adaptação do mongoose-api-query para necessidades mais comuns",

@@ -5,0 +5,0 @@ "main": "index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc