Commit 07df7508 authored by D’jalmar Gutierrez Titirico's avatar D’jalmar Gutierrez Titirico 🚲

Commit obligado ya que el ORM(sequelize) no cuenta con las funcionalidades...

Commit obligado ya que el ORM(sequelize) no cuenta con las funcionalidades necesitadas(en algunos casos si cuenta
pero contiene bugs https://github.com/sequelize/sequelize/issues/5715 )
Se esta a la espera de la solucion de estos bugs
Se añadio la forma de paginar un array(al momento no Sequelize tiene bugs y pull requests para incluir esta funcionalidad)
	modified:   server/components/errors/errorManager.js
Se tiene una etructura basica de como se manejaran los filtros y las busquedas
	modified:   server/components/middleware/parametrosRuta.validator.js
parent 05576281
......@@ -8,7 +8,7 @@
query: {isArray: false}
});
}
getPostulantes(parametros) {
return this.resource.query(parametros).$promise;
}
......
......@@ -6,7 +6,13 @@ export function respondWithResult(res, statusCode) {
statusCode = statusCode || 200;
return function(entity) {
if (entity) {
res.status(statusCode).json(entity);
if(!res.busquedaInterna)
res.status(statusCode).json(entity);
else{
console.log(res.offset+" "+res.limit);
entity.rows = entity.rows.slice(res.offset, res.limit);
res.status(statusCode).json(entity);
}
}
};
}
......
import * as db from '../../sqldb'
import * as db from '../../sqldb'
import sequelize from 'sequelize';
export function formatearRuta(req,res,next) {
var parametros = {};
console.log(req.query);
//parametros de la paginacion
if (req.query.elementos) {
parametros.limit = numeroElementos(req.query.elementos);
if (req.query.pagina)
parametros.offset = numeroPagina(req.query.pagina, parametros.limit);
console.log(req.query);
//busqueda en la misma entidad
if (req.query.palabras && req.query.en) {
parametros.where = buscar(req.query.palabras, req.query.en, false);
}
//ordenacion
parametros.order = orden(req.query);
//inclusion de relaciones
if (req.query.incluye) {
parametros.include = obtenerDependencias(req.query.incluye);
var resultado = obtenerDependencias(req.query.incluye);
parametros.include = resultado.include;
res.busquedaInterna = resultado.busquedaInterna;
}
//busqueda en la misma entidad
if(req.query.palabras && req.query.en){
parametros.where = buscar(req.query.palabras, req.query.en, false);
//ordenacion
//parametros.order = orden(req.query);
parametros.order = [['nombres']];
if (!res.busquedaInterna) {
//parametros de la paginacion
if (req.query.elementos) {
parametros.limit = numeroElementos(req.query.elementos);
if (req.query.pagina)
parametros.offset = numeroPagina(req.query.pagina, parametros.limit);
}
} else {
res.busquedaInterna = true;
if (req.query.elementos) {
res.limit = numeroElementos(req.query.elementos);
if (req.query.pagina)
res.offset = numeroPagina(req.query.pagina, res.limit);
}
}
// parametros.subQuery=false;
req.parametros = parametros;
next();
}
//TODO se debe añadir la paginacion a los hijos
/**
* Este metodo crea los parametros de busqueda de acuerdo al query string
* En este se pueden especificar las entidades que se incluiran y tambien
* En este se pueden especificar las entidades que se incluirán y también
* si se debe realizar una busqueda interna
* @param inclusiones
* @returns {Array}
*/
function obtenerDependencias(inclusiones) {
var busquedaInterna = false;
inclusiones = objetoArray(inclusiones);
var dependencias = [];
inclusiones.forEach(x=> {
......@@ -40,19 +61,16 @@ function obtenerDependencias(inclusiones) {
if (incluye.entidad) {
var dependencia = obtenerDependencia(incluye.entidad);
if (dependencia) {
if(incluye.palabras && incluye.en){
dependencia.where = buscar(palabras, en, true);
}
if (incluye.elementos) {
dependencia.limit = numeroElementos(incluye.elementos);
if (incluye.pagina)
dependencia.offset = numeroPagina(incluye.pagina, dependencia.limit);
if (incluye.palabras && incluye.en) {
dependencia.where = buscar(incluye.palabras, incluye.en, false);
// busquedaInterna = true;
}
dependencia.required = true;
dependencias.push(dependencia);
}
}
});
return dependencias;
return {include :dependencias, busquedaInterna: busquedaInterna};
}
function numeroElementos(elementos) {
......@@ -72,11 +90,11 @@ function numeroPagina(pagina,numeroElementos) {
function orden(query) {
var queryOrdenamiento = '';
if (query.ordenarPor) {
queryOrdenamiento += query.ordenarPor + ' ';
queryOrdenamiento += query.ordenarPor;
}
if (query.orden) {
if (query.orden == 'DESC') {
queryOrdenamiento += query.orden;
queryOrdenamiento += " "+query.orden;
}
}
return queryOrdenamiento;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment