@manticore-labs/nest 0.0.105 → 0.0.106

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (18) hide show
  1. package/.idea/workspace.xml +128 -56
  2. package/build/main/lib/funciones-util/buscar-registro.js +580 -498
  3. package/build/main/lib/funciones-util/funciones-busqueda/generar-campos-con-condiciones.d.ts +1 -1
  4. package/build/main/lib/funciones-util/funciones-busqueda/generar-campos-con-condiciones.js +271 -226
  5. package/build/main/lib/funciones-util/funciones-busqueda/generar-joins.d.ts +2 -1
  6. package/build/main/lib/funciones-util/funciones-busqueda/generar-joins.js +22 -12
  7. package/build/main/lib/funciones-util/funciones-busqueda/obtener-objeto-where-y-relations.js +3 -3
  8. package/build/main/lib/funciones-util/funciones-busqueda/verificar-campo.d.ts +4 -0
  9. package/build/main/lib/funciones-util/funciones-busqueda/verificar-campo.js +363 -0
  10. package/build/module/lib/funciones-util/buscar-registro.js +583 -501
  11. package/build/module/lib/funciones-util/funciones-busqueda/generar-campos-con-condiciones.d.ts +1 -1
  12. package/build/module/lib/funciones-util/funciones-busqueda/generar-campos-con-condiciones.js +274 -226
  13. package/build/module/lib/funciones-util/funciones-busqueda/generar-joins.d.ts +2 -1
  14. package/build/module/lib/funciones-util/funciones-busqueda/generar-joins.js +25 -15
  15. package/build/module/lib/funciones-util/funciones-busqueda/obtener-objeto-where-y-relations.js +3 -3
  16. package/build/module/lib/funciones-util/funciones-busqueda/verificar-campo.d.ts +4 -0
  17. package/build/module/lib/funciones-util/funciones-busqueda/verificar-campo.js +360 -0
  18. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  import { SelectQueryBuilder } from 'typeorm';
2
2
  export declare function generarJoins<Entidad>(nombreRelacion: string, propiedadPapa: string, objeto: {
3
3
  [key: string]: any;
4
- mlabJoin: 'inner' | 'left';
4
+ mlabJoin?: 'inner' | 'left';
5
+ mlabOr?: true | false;
5
6
  }, consulta: SelectQueryBuilder<Entidad>, nivel: number): SelectQueryBuilder<Entidad>;
@@ -8,25 +8,35 @@ function generarJoins(nombreRelacion, propiedadPapa, objeto, consulta, nivel) {
8
8
  .keys(objetoWhereYRelations.objetoRelaciones);
9
9
  const arregloWhere = Object
10
10
  .keys(objetoWhereYRelations.objetoCampos)
11
- .filter(o => o !== 'mlabJoin');
11
+ .filter((n) => n !== 'mlabOr')
12
+ .filter((n) => n !== 'mlabJoin');
12
13
  console.log('Recuerde usar la propiedad "mlabJoin" con valores "inner" o "left"' +
13
14
  ' por defecto la opcion es "inner"');
14
15
  let condicionGeneral = '';
15
16
  let objetoGeneral = {};
16
17
  arregloWhere
17
18
  .forEach((nombreCampo, indice) => {
18
- if (typeof objetoWhereYRelations.objetoCampos[nombreCampo] === 'string') {
19
- const objetoCampoCondiciones = generar_campos_con_condiciones_1.generarCampoConCondiciones(nombreCampo, objetoWhereYRelations.objetoCampos[nombreCampo], propiedadPapa, nivel);
20
- condicionGeneral = condicionGeneral + (indice === arregloWhere.length + 1) ?
21
- objetoCampoCondiciones.consulta :
22
- objetoCampoCondiciones.consulta + ' and ';
23
- objetoGeneral = Object.assign({}, objetoGeneral, objetoCampoCondiciones.objeto);
19
+ const consultaConOr = objetoWhereYRelations.objetoCampos['mlabOr'];
20
+ if (nombreCampo === 'mlabOr') {
24
21
  }
25
22
  else {
26
- condicionGeneral = condicionGeneral + (indice === arregloWhere.length + 1) ?
27
- `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}` :
28
- `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo} and `;
29
- objetoGeneral[propiedadPapa + nivel + nombreCampo] = objetoWhereYRelations.objetoCampos[nombreCampo];
23
+ const concatenador = (consultaConOr ? ' OR ' : ' AND ');
24
+ const indiceASumar = (consultaConOr === false || consultaConOr === true) ? 2 : 1;
25
+ const valorEsString = typeof objetoWhereYRelations.objetoCampos[nombreCampo] === 'string';
26
+ const valorEsArray = Array.isArray(objetoWhereYRelations.objetoCampos[nombreCampo]);
27
+ if (valorEsString || valorEsArray) {
28
+ const objetoCampoCondiciones = generar_campos_con_condiciones_1.generarCampoConCondiciones(nombreCampo, objetoWhereYRelations.objetoCampos[nombreCampo], propiedadPapa, nivel);
29
+ condicionGeneral = condicionGeneral + (indice + indiceASumar === arregloWhere.length) ?
30
+ objetoCampoCondiciones.consulta :
31
+ objetoCampoCondiciones.consulta + concatenador;
32
+ objetoGeneral = Object.assign({}, objetoGeneral, objetoCampoCondiciones.objeto);
33
+ }
34
+ else {
35
+ condicionGeneral = condicionGeneral + (indice + indiceASumar === arregloWhere.length) ?
36
+ `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}` :
37
+ `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}${concatenador}`;
38
+ objetoGeneral[propiedadPapa + nivel + nombreCampo] = objetoWhereYRelations.objetoCampos[nombreCampo];
39
+ }
30
40
  }
31
41
  });
32
42
  if (objeto.mlabJoin) {
@@ -53,4 +63,4 @@ function generarJoins(nombreRelacion, propiedadPapa, objeto, consulta, nivel) {
53
63
  }
54
64
  }
55
65
  exports.generarJoins = generarJoins;
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhci1qb2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZnVuY2lvbmVzLXV0aWwvZnVuY2lvbmVzLWJ1c3F1ZWRhL2dlbmVyYXItam9pbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSx5RkFBa0Y7QUFDbEYscUZBQThFO0FBRTlFLHNCQUNFLGNBQXNCLEVBQ3RCLGFBQXFCLEVBQ3JCLE1BQTBELEVBQzFELFFBQXFDLEVBQ3JDLEtBQWE7SUFFYixNQUFNLHFCQUFxQixHQUFHLCtEQUE0QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25FLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTTtTQUM1QixJQUFJLENBQ0gscUJBQXFCLENBQUMsZ0JBQWdCLENBQ3ZDLENBQUM7SUFDSixNQUFNLFlBQVksR0FBRyxNQUFNO1NBQ3hCLElBQUksQ0FDSCxxQkFBcUIsQ0FBQyxZQUFZLENBQ25DO1NBQ0EsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0VBQW9FO1FBQzlFLG1DQUFtQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDMUIsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLFlBQVk7U0FDVCxPQUFPLENBQ04sQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDdEIsSUFBSSxPQUFPLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDdkUsTUFBTSxzQkFBc0IsR0FBRywyREFBMEIsQ0FDdkQsV0FBVyxFQUNYLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFDL0MsYUFBYSxFQUNiLEtBQUssQ0FDTixDQUFDO1lBQ0YsZ0JBQWdCLEdBQUcsZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDakMsc0JBQXNCLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUM1QyxhQUFhLHFCQUNSLGFBQWEsRUFDYixzQkFBc0IsQ0FBQyxNQUFNLENBQ2pDLENBQUM7U0FDSDthQUFNO1lBQ0wsZ0JBQWdCLEdBQUcsZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxRSxHQUFHLGFBQWEsSUFBSSxXQUFXLE9BQU8sYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RSxHQUFHLGFBQWEsSUFBSSxXQUFXLE9BQU8sYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLE9BQU8sQ0FBQztZQUNuRixhQUFhLENBQUMsYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDdEc7SUFDSCxDQUFDLENBQ0YsQ0FBQztJQUNKLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUNuQixJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQy9CLFFBQVEsQ0FBQyxrQkFBa0IsQ0FDekIsR0FBRyxjQUFjLElBQUksYUFBYSxFQUFFLEVBQ3BDLEdBQUcsYUFBYSxFQUFFLEVBQ2xCLGdCQUFnQixFQUNoQixhQUFhLENBQ2QsQ0FBQztTQUNIO2FBQU07WUFDTCxRQUFRLENBQUMsaUJBQWlCLENBQ3hCLEdBQUcsY0FBYyxJQUFJLGFBQWEsRUFBRSxFQUNwQyxHQUFHLGFBQWEsRUFBRSxFQUNsQixnQkFBZ0IsRUFDaEIsYUFBYSxDQUNkLENBQUM7U0FDSDtLQUNGO1NBQU07UUFDTCxRQUFRLENBQUMsa0JBQWtCLENBQ3pCLEdBQUcsY0FBYyxJQUFJLGFBQWEsRUFBRSxFQUNwQyxHQUFHLGFBQWEsRUFBRSxFQUNsQixnQkFBZ0IsRUFDaEIsYUFBYSxDQUNkLENBQUM7S0FDSDtJQUNELElBQUkscUJBQXFCLENBQUMsZ0JBQWdCLEtBQUssRUFBRSxFQUFFO1FBQ2pELE9BQU8sUUFBUSxDQUFDO0tBQ2pCO1NBQU07UUFDTCxnQkFBZ0I7YUFDYixPQUFPLENBQ04sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO1lBQ3RCLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLFFBQVEsR0FBRyxZQUFZLENBQ3JCLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsRUFDM0QsUUFBUSxFQUNSLEtBQUssQ0FDTixDQUFDO1FBQ0osQ0FBQyxDQUNGLENBQUM7UUFDSixPQUFPLFFBQVEsQ0FBQztLQUNqQjtBQUNILENBQUM7QUF4RkQsb0NBd0ZDIn0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhci1qb2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZnVuY2lvbmVzLXV0aWwvZnVuY2lvbmVzLWJ1c3F1ZWRhL2dlbmVyYXItam9pbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSx5RkFBa0Y7QUFDbEYscUZBQThFO0FBRTlFLHNCQUNFLGNBQXNCLEVBQ3RCLGFBQXFCLEVBQ3JCLE1BQWtGLEVBQ2xGLFFBQXFDLEVBQ3JDLEtBQWE7SUFFYixNQUFNLHFCQUFxQixHQUFHLCtEQUE0QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25FLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTTtTQUM1QixJQUFJLENBQ0gscUJBQXFCLENBQUMsZ0JBQWdCLENBQ3ZDLENBQUM7SUFDSixNQUFNLFlBQVksR0FBRyxNQUFNO1NBQ3hCLElBQUksQ0FDSCxxQkFBcUIsQ0FBQyxZQUFZLENBQ25DO1NBQ0EsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQSxDQUFDLEtBQUssUUFBUSxDQUFDO1NBQzNCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUEsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0VBQW9FO1FBQzlFLG1DQUFtQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDMUIsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLFlBQVk7U0FDVCxPQUFPLENBQ04sQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDdEIsTUFBTSxhQUFhLEdBQUcscUJBQXFCLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLElBQUcsV0FBVyxLQUFLLFFBQVEsRUFBQztTQUUzQjthQUFJO1lBQ0gsTUFBTSxZQUFZLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FB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
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  function obtenerObjetoWhereYRelations(propiedad) {
4
4
  const campos = Object.keys(propiedad);
5
5
  const arregloCampos = campos.filter((campo) => {
6
- return typeof propiedad[campo] !== 'object';
6
+ return typeof propiedad[campo] !== 'object' || Array.isArray(propiedad[campo]);
7
7
  });
8
8
  const arregloRelaciones = campos.filter((campo) => {
9
- return typeof propiedad[campo] === 'object';
9
+ return typeof propiedad[campo] === 'object' && !Array.isArray(propiedad[campo]);
10
10
  });
11
11
  const objetoCampos = {};
12
12
  arregloCampos.forEach((campo) => {
@@ -22,4 +22,4 @@ function obtenerObjetoWhereYRelations(propiedad) {
22
22
  };
23
23
  }
24
24
  exports.obtenerObjetoWhereYRelations = obtenerObjetoWhereYRelations;
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2J0ZW5lci1vYmpldG8td2hlcmUteS1yZWxhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Z1bmNpb25lcy11dGlsL2Z1bmNpb25lcy1idXNxdWVkYS9vYnRlbmVyLW9iamV0by13aGVyZS15LXJlbGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNDQUE2QyxTQUFTO0lBQ3BELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDakMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNSLE9BQU8sT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUSxDQUFDO0lBQzlDLENBQUMsQ0FDRixDQUFDO0lBQ0YsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUNyQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ1IsT0FBTyxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxRQUFRLENBQUM7SUFDOUMsQ0FBQyxDQUNGLENBQUM7SUFDRixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDeEIsYUFBYSxDQUFDLE9BQU8sQ0FDbkIsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNSLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUNGLENBQUM7SUFDRixNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUM1QixpQkFBaUIsQ0FBQyxPQUFPLENBQ3ZCLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDUixnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUNGLENBQUM7SUFDRixPQUFPO1FBQ0wsZ0JBQWdCO1FBQ2hCLFlBQVk7S0FDYixDQUFDO0FBQ0osQ0FBQztBQTVCRCxvRUE0QkMifQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2J0ZW5lci1vYmpldG8td2hlcmUteS1yZWxhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Z1bmNpb25lcy11dGlsL2Z1bmNpb25lcy1idXNxdWVkYS9vYnRlbmVyLW9iamV0by13aGVyZS15LXJlbGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNDQUE2QyxTQUFTO0lBQ3BELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDakMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNSLE9BQU8sT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQyxDQUNGLENBQUM7SUFDRixNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ3JDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDUixPQUFPLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQyxDQUNGLENBQUM7SUFDRixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDeEIsYUFBYSxDQUFDLE9BQU8sQ0FDbkIsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNSLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUNGLENBQUM7SUFDRixNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUM1QixpQkFBaUIsQ0FBQyxPQUFPLENBQ3ZCLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDUixnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUNGLENBQUM7SUFDRixPQUFPO1FBQ0wsZ0JBQWdCO1FBQ2hCLFlBQVk7S0FDYixDQUFDO0FBQ0osQ0FBQztBQTVCRCxvRUE0QkMifQ==
@@ -0,0 +1,4 @@
1
+ export declare function verificarCampo(nombreCampo: string, campo: string, propiedadPapa: string, nivel: number): {
2
+ consulta: string;
3
+ objeto: any;
4
+ };
@@ -0,0 +1,363 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function verificarCampo(nombreCampo, campo, propiedadPapa, nivel) {
4
+ let noEncuentraOperador = true;
5
+ if (noEncuentraOperador) {
6
+ const expresionRegularNot = /Not\(".+"\)+/g;
7
+ const contieneNot = campo.match(expresionRegularNot);
8
+ if (contieneNot && noEncuentraOperador) {
9
+ const sinNot = campo.replace('Not("', '').replace('")', '');
10
+ if (noEncuentraOperador) {
11
+ const expresionRegularLike = /Like\(".+"\)+/g;
12
+ const contieneLike = sinNot.match(expresionRegularLike);
13
+ if (contieneLike) {
14
+ campo = sinNot.replace('Like("', '')
15
+ .replace('")', '');
16
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} LIKE :${propiedadPapa}${nivel}${nombreCampo} )`;
17
+ noEncuentraOperador = false;
18
+ const respuestaADevolver = {
19
+ consulta,
20
+ objeto: {}
21
+ };
22
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
23
+ return respuestaADevolver;
24
+ }
25
+ }
26
+ if (noEncuentraOperador) {
27
+ const expresionRegularLessThan = /LessThan\(".+"\)+/g;
28
+ const contieneLessThan = sinNot.match(expresionRegularLessThan);
29
+ if (contieneLessThan) {
30
+ campo = sinNot
31
+ .replace('LessThan("', '')
32
+ .replace('")', '');
33
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} < :${propiedadPapa}${nivel}${nombreCampo} )`;
34
+ noEncuentraOperador = false;
35
+ const respuestaADevolver = {
36
+ consulta,
37
+ objeto: {}
38
+ };
39
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
40
+ return respuestaADevolver;
41
+ }
42
+ }
43
+ if (noEncuentraOperador) {
44
+ const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
45
+ const contieneMoreThan = sinNot.match(expresionRegularMoreThan);
46
+ if (contieneMoreThan) {
47
+ campo = sinNot
48
+ .replace('MoreThan("', '')
49
+ .replace('")', '');
50
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} > :${propiedadPapa}${nivel}${nombreCampo})`;
51
+ noEncuentraOperador = false;
52
+ const respuestaADevolver = {
53
+ consulta,
54
+ objeto: {}
55
+ };
56
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
57
+ return respuestaADevolver;
58
+ }
59
+ }
60
+ if (noEncuentraOperador) {
61
+ const expresionRegularEqual = /Equal\(".+"\)+/g;
62
+ const contieneEqual = sinNot.match(expresionRegularEqual);
63
+ if (contieneEqual) {
64
+ campo = sinNot
65
+ .replace('Equal("', '')
66
+ .replace('")', '');
67
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo})`;
68
+ noEncuentraOperador = false;
69
+ const respuestaADevolver = {
70
+ consulta,
71
+ objeto: {}
72
+ };
73
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
74
+ return respuestaADevolver;
75
+ }
76
+ }
77
+ if (noEncuentraOperador) {
78
+ const expresionRegularBetween = /Between\(".+"\)+/g;
79
+ const contieneBetween = sinNot.match(expresionRegularBetween);
80
+ if (contieneBetween) {
81
+ const busqueda = [...sinNot
82
+ .replace('Between("', '')
83
+ .replace('")', '')
84
+ .replace(' ', '')
85
+ .split(',')
86
+ .map((n) => isNaN(n) ? n : +n)];
87
+ const esFecha = busqueda[0].length === 10 &&
88
+ busqueda[0].length === 10 &&
89
+ (typeof busqueda[0] === 'string') &&
90
+ (typeof busqueda[1] === 'string') &&
91
+ busqueda[0].match('-') &&
92
+ busqueda[1].match('-');
93
+ if (esFecha) {
94
+ const fechaInicio = new Date(busqueda[0].substring(0, 4), busqueda[0].substring(5, 7) - 1, busqueda[0].substring(8));
95
+ const fechaFin = new Date(busqueda[1].substring(0, 4), busqueda[1].substring(5, 7) - 1, busqueda[1].substring(8));
96
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin )`;
97
+ noEncuentraOperador = false;
98
+ const respuestaADevolver = {
99
+ consulta,
100
+ objeto: {}
101
+ };
102
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Inicio'] = fechaInicio;
103
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Fin'] = fechaFin;
104
+ return respuestaADevolver;
105
+ }
106
+ else {
107
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin )`;
108
+ noEncuentraOperador = false;
109
+ const respuestaADevolver = {
110
+ consulta,
111
+ objeto: {}
112
+ };
113
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Inicio'] = busqueda[0];
114
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Fin'] = busqueda[1];
115
+ return respuestaADevolver;
116
+ }
117
+ noEncuentraOperador = false;
118
+ }
119
+ }
120
+ if (noEncuentraOperador) {
121
+ const expresionRegularIn = /In\(.+\)+/g;
122
+ const contieneIn = sinNot.match(expresionRegularIn);
123
+ if (contieneIn) {
124
+ let arregloIn;
125
+ try {
126
+ arregloIn = JSON.parse(sinNot
127
+ .replace('In(', '')
128
+ .replace('])', ']'));
129
+ const objetoIn = {};
130
+ let IN = '';
131
+ arregloIn
132
+ .forEach((campoIn, indice) => {
133
+ IN = IN + ((indice + 1) === arregloIn.length ? `':mlab${propiedadPapa}${nivel}${indice}${campoIn}'` : `:mlab'${propiedadPapa}${nivel}${indice}${campoIn}',`);
134
+ objetoIn[`mlab${propiedadPapa}${nivel}${indice}${campoIn}`] = campoIn;
135
+ });
136
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} IN( ${IN} ) )`;
137
+ noEncuentraOperador = false;
138
+ const respuestaADevolver = {
139
+ consulta,
140
+ objeto: objetoIn
141
+ };
142
+ return respuestaADevolver;
143
+ }
144
+ catch (error) {
145
+ console.error({
146
+ error,
147
+ mensaje: 'No se pudo usar el In'
148
+ });
149
+ const consulta = ``;
150
+ noEncuentraOperador = false;
151
+ const respuestaADevolverDeINVacio = {
152
+ consulta,
153
+ objeto: {}
154
+ };
155
+ return respuestaADevolverDeINVacio;
156
+ }
157
+ }
158
+ }
159
+ if (noEncuentraOperador) {
160
+ const expresionRegularIsNull = /IsNull\(\)+/g;
161
+ const contieneIsNull = sinNot.match(expresionRegularIsNull);
162
+ if (contieneIsNull) {
163
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} IS NULL )`;
164
+ noEncuentraOperador = false;
165
+ const respuestaADevolver = {
166
+ consulta,
167
+ objeto: {}
168
+ };
169
+ return respuestaADevolver;
170
+ }
171
+ }
172
+ const consultaSinOperadoresNot = `${propiedadPapa}.${nombreCampo} <> :${propiedadPapa}${nivel}${nombreCampo} OR ${propiedadPapa}.${nombreCampo} IS NULL`;
173
+ noEncuentraOperador = false;
174
+ const respuestaADevolverSinOperadoresNot = {
175
+ consulta: consultaSinOperadoresNot,
176
+ objeto: {}
177
+ };
178
+ respuestaADevolverSinOperadoresNot.objeto[propiedadPapa + nivel + nombreCampo] = sinNot;
179
+ return respuestaADevolverSinOperadoresNot;
180
+ }
181
+ } // Fin de NOT
182
+ if (noEncuentraOperador) {
183
+ const expresionRegularLike = /Like\(".+"\)+/g;
184
+ const contieneLike = campo.match(expresionRegularLike);
185
+ if (contieneLike) {
186
+ campo = campo
187
+ .replace('Like("', '')
188
+ .replace('")', '');
189
+ const consulta = `${propiedadPapa}.${nombreCampo} LIKE :${propiedadPapa}${nivel}${nombreCampo}`;
190
+ noEncuentraOperador = false;
191
+ const respuestaADevolver = {
192
+ consulta,
193
+ objeto: {}
194
+ };
195
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
196
+ return respuestaADevolver;
197
+ }
198
+ }
199
+ if (noEncuentraOperador) {
200
+ const expresionRegularLessThan = /LessThan\(".+"\)+/g;
201
+ const contieneLessThan = campo.match(expresionRegularLessThan);
202
+ if (contieneLessThan) {
203
+ campo = campo
204
+ .replace('LessThan("', '')
205
+ .replace('")', '');
206
+ const consulta = `${propiedadPapa}.${nombreCampo} < :${propiedadPapa}${nivel}${nombreCampo}`;
207
+ noEncuentraOperador = false;
208
+ const respuestaADevolver = {
209
+ consulta,
210
+ objeto: {}
211
+ };
212
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
213
+ return respuestaADevolver;
214
+ }
215
+ }
216
+ if (noEncuentraOperador) {
217
+ const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
218
+ const contieneMoreThan = campo.match(expresionRegularMoreThan);
219
+ if (contieneMoreThan) {
220
+ campo = campo.replace('MoreThan("', '')
221
+ .replace('")', '');
222
+ const consulta = `${propiedadPapa}.${nombreCampo} > :${propiedadPapa}${nivel}${nombreCampo}`;
223
+ noEncuentraOperador = false;
224
+ const respuestaADevolver = {
225
+ consulta,
226
+ objeto: {}
227
+ };
228
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
229
+ return respuestaADevolver;
230
+ }
231
+ }
232
+ if (noEncuentraOperador) {
233
+ const expresionRegularEqual = /Equal\(".+"\)+/g;
234
+ const contieneEqual = campo.match(expresionRegularEqual);
235
+ if (contieneEqual) {
236
+ campo = campo
237
+ .replace('Equal("', '').replace('")', '');
238
+ const consulta = `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}`;
239
+ noEncuentraOperador = false;
240
+ const respuestaADevolver = {
241
+ consulta,
242
+ objeto: {}
243
+ };
244
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
245
+ return respuestaADevolver;
246
+ }
247
+ }
248
+ if (noEncuentraOperador) {
249
+ const expresionRegularBetween = /Between\(".+"\)+/g;
250
+ const contieneBetween = campo.match(expresionRegularBetween);
251
+ if (contieneBetween) {
252
+ const busqueda = [...campo
253
+ .replace('Between("', '')
254
+ .replace('")', '')
255
+ .replace(' ', '')
256
+ .split(',')
257
+ .map((n) => isNaN(n) ? n : +n)];
258
+ const esFecha = busqueda[0].length === 10 &&
259
+ busqueda[0].length === 10 &&
260
+ (typeof busqueda[0] === 'string') &&
261
+ (typeof busqueda[1] === 'string') &&
262
+ busqueda[0].match('-') &&
263
+ busqueda[1].match('-');
264
+ if (esFecha) {
265
+ const fechaInicio = new Date(busqueda[0].substring(0, 4), busqueda[0].substring(5, 7) - 1, busqueda[0].substring(8));
266
+ const fechaFin = new Date(busqueda[1].substring(0, 4), busqueda[1].substring(5, 7) - 1, busqueda[1].substring(8));
267
+ const consulta = `${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin `;
268
+ noEncuentraOperador = false;
269
+ const respuestaADevolver = {
270
+ consulta,
271
+ objeto: {}
272
+ };
273
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Inicio'] = fechaInicio;
274
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Fin'] = fechaFin;
275
+ return respuestaADevolver;
276
+ }
277
+ else {
278
+ const consulta = `${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin`;
279
+ noEncuentraOperador = false;
280
+ const respuestaADevolver = {
281
+ consulta,
282
+ objeto: {}
283
+ };
284
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Inicio'] = busqueda[0];
285
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Fin'] = busqueda[1];
286
+ return respuestaADevolver;
287
+ }
288
+ }
289
+ }
290
+ if (noEncuentraOperador) {
291
+ const expresionRegularIn = /In\(.+\)+/g;
292
+ const contieneIn = campo.match(expresionRegularIn);
293
+ if (contieneIn) {
294
+ let arregloIn;
295
+ try {
296
+ arregloIn = JSON.parse(campo
297
+ .replace('In(', '')
298
+ .replace('])', ']'));
299
+ if (arregloIn.length > 0) {
300
+ const objetoIn = {};
301
+ let IN = '';
302
+ arregloIn
303
+ .forEach((campoIn, indice) => {
304
+ IN = IN + ((indice + 1) === arregloIn.length ? `:mlab${propiedadPapa}${nivel}${indice}${campoIn}` : `:mlab${propiedadPapa}${nivel}${indice}${campoIn},`);
305
+ objetoIn[`mlab${propiedadPapa}${nivel}${indice}${campoIn}`] = campoIn;
306
+ });
307
+ const consulta = `${propiedadPapa}.${nombreCampo} IN( ${IN} )`;
308
+ noEncuentraOperador = false;
309
+ const respuestaADevolver = {
310
+ consulta,
311
+ objeto: objetoIn
312
+ };
313
+ return respuestaADevolver;
314
+ }
315
+ else {
316
+ const consulta = ``;
317
+ noEncuentraOperador = false;
318
+ const respuestaADevolverDeINVacio = {
319
+ consulta,
320
+ objeto: {}
321
+ };
322
+ return respuestaADevolverDeINVacio;
323
+ }
324
+ }
325
+ catch (error) {
326
+ console.error({
327
+ error,
328
+ mensaje: 'No se pudo usar el In'
329
+ });
330
+ const consulta = ``;
331
+ noEncuentraOperador = false;
332
+ const respuestaADevolverDeINVacio = {
333
+ consulta,
334
+ objeto: {}
335
+ };
336
+ return respuestaADevolverDeINVacio;
337
+ }
338
+ }
339
+ }
340
+ if (noEncuentraOperador) {
341
+ const expresionRegularIsNull = /IsNull\(\)+/g;
342
+ const contieneIsNull = campo.match(expresionRegularIsNull);
343
+ if (contieneIsNull) {
344
+ const consulta = `${propiedadPapa}.${nombreCampo} IS NULL`;
345
+ noEncuentraOperador = false;
346
+ const respuestaADevolver = {
347
+ consulta,
348
+ objeto: {}
349
+ };
350
+ return respuestaADevolver;
351
+ }
352
+ }
353
+ const consultaSinOperadores = `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}`;
354
+ noEncuentraOperador = false;
355
+ const respuestaADevolverSinOperadores = {
356
+ consulta: consultaSinOperadores,
357
+ objeto: {}
358
+ };
359
+ respuestaADevolverSinOperadores.objeto[propiedadPapa + nivel + nombreCampo] = campo;
360
+ return respuestaADevolverSinOperadores;
361
+ }
362
+ exports.verificarCampo = verificarCampo;
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2FyLWNhbXBvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9mdW5jaW9uZXMtdXRpbC9mdW5jaW9uZXMtYnVzcXVlZGEvdmVyaWZpY2FyLWNhbXBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0JBQ0UsV0FBbUIsRUFDbkIsS0FBYSxFQUNiLGFBQXFCLEVBQ3JCLEtBQWE7SUFFYixJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQztJQUMvQixJQUFJLG1CQUFtQixFQUFFO1FBQ3ZCLE1BQU0sbUJBQW1CLEdBQUcsZUFBZSxDQUFDO1FBQzVDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyRCxJQUFJLFdBQVcsSUFBSSxtQkFBbUIsRUFBRTtZQUN0QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVELElBQUksbUJBQW1CLEVBQUU7Z0JBQ3ZCLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7Z0JBQzlDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxZQUFZLEVBQUU7b0JBQ2hCLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUNwQixRQUFRLEVBQUUsRUFBRSxDQUNiO3lCQUNFLE9BQU8sQ0FDTixJQUFJLEVBQUUsRUFBRSxDQUNULENBQUM7b0JBQ0osTUFBTSxRQUFRLEdBQUcsUUFBUSxhQUFhLElBQUksV0FBVyxVQUFVLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxJQUFJLENBQUM7b0JBQ3ZHLG1CQUFtQixHQUFHLEtBQUssQ0FBQztvQkFDNUIsTUFBTSxrQkFBa0IsR0FBRzt3QkFDekIsUUFBUTt3QkFDUixNQUFNLEVB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