@manticore-labs/nest 0.0.104 → 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 +129 -57
  2. package/build/main/lib/funciones-util/buscar-registro.js +581 -499
  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 +584 -502
  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,18 +1,227 @@
1
+ import { verificarCampo } from './verificar-campo';
1
2
  export function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, nivel) {
2
- console.log('Recuerde que el operador Any no esta disponible');
3
- let noEncuentraOperador = true;
4
- if (noEncuentraOperador) {
5
- const expresionRegularNot = /Not\(".+"\)+/g;
6
- const contieneNot = campo.match(expresionRegularNot);
7
- if (contieneNot && noEncuentraOperador) {
8
- const sinNot = campo.replace('Not("', '').replace('")', '');
3
+ let esArreglo = false;
4
+ campo;
5
+ try {
6
+ esArreglo = Array.isArray(campo);
7
+ }
8
+ catch (e) {
9
+ }
10
+ if (esArreglo) {
11
+ let campoArray = campo;
12
+ let consulta = '';
13
+ let objeto = {};
14
+ campoArray
15
+ .forEach((campo, indice) => {
16
+ if (typeof campo === 'string') {
17
+ const respuestaVerificarCampo = verificarCampo(nombreCampo, campo, propiedadPapa, nivel);
18
+ consulta = consulta + ((indice + 1) === campoArray.length ?
19
+ respuestaVerificarCampo.consulta :
20
+ respuestaVerificarCampo.consulta + ' OR ');
21
+ objeto = {
22
+ ...objeto,
23
+ ...respuestaVerificarCampo.objeto
24
+ };
25
+ }
26
+ else {
27
+ consulta = consulta + ((indice + 1) === campoArray.length ?
28
+ `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}` :
29
+ `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}` + ' OR ');
30
+ objeto[propiedadPapa + nivel + nombreCampo] = campo;
31
+ }
32
+ nivel = nivel + 1;
33
+ });
34
+ console.log({ consulta, objeto });
35
+ return { consulta, objeto };
36
+ }
37
+ else {
38
+ let noEncuentraOperador = true;
39
+ if (typeof campo === 'string') {
40
+ if (noEncuentraOperador) {
41
+ const expresionRegularNot = /Not\(".+"\)+/g;
42
+ const contieneNot = campo.match(expresionRegularNot);
43
+ if (contieneNot && noEncuentraOperador) {
44
+ const sinNot = campo.replace('Not("', '').replace('")', '');
45
+ if (noEncuentraOperador) {
46
+ const expresionRegularLike = /Like\(".+"\)+/g;
47
+ const contieneLike = sinNot.match(expresionRegularLike);
48
+ if (contieneLike) {
49
+ campo = sinNot.replace('Like("', '')
50
+ .replace('")', '');
51
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} LIKE :${propiedadPapa}${nivel}${nombreCampo} )`;
52
+ noEncuentraOperador = false;
53
+ const respuestaADevolver = {
54
+ consulta,
55
+ objeto: {}
56
+ };
57
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
58
+ return respuestaADevolver;
59
+ }
60
+ }
61
+ if (noEncuentraOperador) {
62
+ const expresionRegularLessThan = /LessThan\(".+"\)+/g;
63
+ const contieneLessThan = sinNot.match(expresionRegularLessThan);
64
+ if (contieneLessThan) {
65
+ campo = sinNot
66
+ .replace('LessThan("', '')
67
+ .replace('")', '');
68
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} < :${propiedadPapa}${nivel}${nombreCampo} )`;
69
+ noEncuentraOperador = false;
70
+ const respuestaADevolver = {
71
+ consulta,
72
+ objeto: {}
73
+ };
74
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
75
+ return respuestaADevolver;
76
+ }
77
+ }
78
+ if (noEncuentraOperador) {
79
+ const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
80
+ const contieneMoreThan = sinNot.match(expresionRegularMoreThan);
81
+ if (contieneMoreThan) {
82
+ campo = sinNot
83
+ .replace('MoreThan("', '')
84
+ .replace('")', '');
85
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} > :${propiedadPapa}${nivel}${nombreCampo})`;
86
+ noEncuentraOperador = false;
87
+ const respuestaADevolver = {
88
+ consulta,
89
+ objeto: {}
90
+ };
91
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
92
+ return respuestaADevolver;
93
+ }
94
+ }
95
+ if (noEncuentraOperador) {
96
+ const expresionRegularEqual = /Equal\(".+"\)+/g;
97
+ const contieneEqual = sinNot.match(expresionRegularEqual);
98
+ if (contieneEqual) {
99
+ campo = sinNot
100
+ .replace('Equal("', '')
101
+ .replace('")', '');
102
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo})`;
103
+ noEncuentraOperador = false;
104
+ const respuestaADevolver = {
105
+ consulta,
106
+ objeto: {}
107
+ };
108
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
109
+ return respuestaADevolver;
110
+ }
111
+ }
112
+ if (noEncuentraOperador) {
113
+ const expresionRegularBetween = /Between\(".+"\)+/g;
114
+ const contieneBetween = sinNot.match(expresionRegularBetween);
115
+ if (contieneBetween) {
116
+ const busqueda = [...sinNot
117
+ .replace('Between("', '')
118
+ .replace('")', '')
119
+ .replace(' ', '')
120
+ .split(',')
121
+ .map((n) => isNaN(n) ? n : +n)];
122
+ const esFecha = busqueda[0].length === 10 &&
123
+ busqueda[0].length === 10 &&
124
+ (typeof busqueda[0] === 'string') &&
125
+ (typeof busqueda[1] === 'string') &&
126
+ busqueda[0].match('-') &&
127
+ busqueda[1].match('-');
128
+ if (esFecha) {
129
+ const fechaInicio = new Date(busqueda[0].substring(0, 4), busqueda[0].substring(5, 7) - 1, busqueda[0].substring(8));
130
+ const fechaFin = new Date(busqueda[1].substring(0, 4), busqueda[1].substring(5, 7) - 1, busqueda[1].substring(8));
131
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin )`;
132
+ noEncuentraOperador = false;
133
+ const respuestaADevolver = {
134
+ consulta,
135
+ objeto: {}
136
+ };
137
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Inicio'] = fechaInicio;
138
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Fin'] = fechaFin;
139
+ return respuestaADevolver;
140
+ }
141
+ else {
142
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin )`;
143
+ noEncuentraOperador = false;
144
+ const respuestaADevolver = {
145
+ consulta,
146
+ objeto: {}
147
+ };
148
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Inicio'] = busqueda[0];
149
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Fin'] = busqueda[1];
150
+ return respuestaADevolver;
151
+ }
152
+ noEncuentraOperador = false;
153
+ }
154
+ }
155
+ if (noEncuentraOperador) {
156
+ const expresionRegularIn = /In\(.+\)+/g;
157
+ const contieneIn = sinNot.match(expresionRegularIn);
158
+ if (contieneIn) {
159
+ let arregloIn;
160
+ try {
161
+ arregloIn = JSON.parse(sinNot
162
+ .replace('In(', '')
163
+ .replace('])', ']'));
164
+ const objetoIn = {};
165
+ let IN = '';
166
+ arregloIn
167
+ .forEach((campoIn, indice) => {
168
+ IN = IN + ((indice + 1) === arregloIn.length ? `':mlab${propiedadPapa}${nivel}${indice}${campoIn}'` : `:mlab'${propiedadPapa}${nivel}${indice}${campoIn}',`);
169
+ objetoIn[`mlab${propiedadPapa}${nivel}${indice}${campoIn}`] = campoIn;
170
+ });
171
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} IN( ${IN} ) )`;
172
+ noEncuentraOperador = false;
173
+ const respuestaADevolver = {
174
+ consulta,
175
+ objeto: objetoIn
176
+ };
177
+ return respuestaADevolver;
178
+ }
179
+ catch (error) {
180
+ console.error({
181
+ error,
182
+ mensaje: 'No se pudo usar el In'
183
+ });
184
+ const consulta = ``;
185
+ noEncuentraOperador = false;
186
+ const respuestaADevolverDeINVacio = {
187
+ consulta,
188
+ objeto: {}
189
+ };
190
+ return respuestaADevolverDeINVacio;
191
+ }
192
+ }
193
+ }
194
+ if (noEncuentraOperador) {
195
+ const expresionRegularIsNull = /IsNull\(\)+/g;
196
+ const contieneIsNull = sinNot.match(expresionRegularIsNull);
197
+ if (contieneIsNull) {
198
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} IS NULL )`;
199
+ noEncuentraOperador = false;
200
+ const respuestaADevolver = {
201
+ consulta,
202
+ objeto: {}
203
+ };
204
+ return respuestaADevolver;
205
+ }
206
+ }
207
+ const consultaSinOperadoresNot = `${propiedadPapa}.${nombreCampo} <> :${propiedadPapa}${nivel}${nombreCampo} OR ${propiedadPapa}.${nombreCampo} IS NULL`;
208
+ noEncuentraOperador = false;
209
+ const respuestaADevolverSinOperadoresNot = {
210
+ consulta: consultaSinOperadoresNot,
211
+ objeto: {}
212
+ };
213
+ respuestaADevolverSinOperadoresNot.objeto[propiedadPapa + nivel + nombreCampo] = sinNot;
214
+ return respuestaADevolverSinOperadoresNot;
215
+ }
216
+ } // Fin de NOT
9
217
  if (noEncuentraOperador) {
10
218
  const expresionRegularLike = /Like\(".+"\)+/g;
11
- const contieneLike = sinNot.match(expresionRegularLike);
219
+ const contieneLike = campo.match(expresionRegularLike);
12
220
  if (contieneLike) {
13
- campo = sinNot.replace('Like("', '')
221
+ campo = campo
222
+ .replace('Like("', '')
14
223
  .replace('")', '');
15
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} LIKE :${propiedadPapa}${nivel}${nombreCampo} )`;
224
+ const consulta = `${propiedadPapa}.${nombreCampo} LIKE :${propiedadPapa}${nivel}${nombreCampo}`;
16
225
  noEncuentraOperador = false;
17
226
  const respuestaADevolver = {
18
227
  consulta,
@@ -24,12 +233,12 @@ export function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, ni
24
233
  }
25
234
  if (noEncuentraOperador) {
26
235
  const expresionRegularLessThan = /LessThan\(".+"\)+/g;
27
- const contieneLessThan = sinNot.match(expresionRegularLessThan);
236
+ const contieneLessThan = campo.match(expresionRegularLessThan);
28
237
  if (contieneLessThan) {
29
- campo = sinNot
238
+ campo = campo
30
239
  .replace('LessThan("', '')
31
240
  .replace('")', '');
32
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} < :${propiedadPapa}${nivel}${nombreCampo} )`;
241
+ const consulta = `${propiedadPapa}.${nombreCampo} < :${propiedadPapa}${nivel}${nombreCampo}`;
33
242
  noEncuentraOperador = false;
34
243
  const respuestaADevolver = {
35
244
  consulta,
@@ -41,12 +250,11 @@ export function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, ni
41
250
  }
42
251
  if (noEncuentraOperador) {
43
252
  const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
44
- const contieneMoreThan = sinNot.match(expresionRegularMoreThan);
253
+ const contieneMoreThan = campo.match(expresionRegularMoreThan);
45
254
  if (contieneMoreThan) {
46
- campo = sinNot
47
- .replace('MoreThan("', '')
255
+ campo = campo.replace('MoreThan("', '')
48
256
  .replace('")', '');
49
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} > :${propiedadPapa}${nivel}${nombreCampo})`;
257
+ const consulta = `${propiedadPapa}.${nombreCampo} > :${propiedadPapa}${nivel}${nombreCampo}`;
50
258
  noEncuentraOperador = false;
51
259
  const respuestaADevolver = {
52
260
  consulta,
@@ -58,12 +266,11 @@ export function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, ni
58
266
  }
59
267
  if (noEncuentraOperador) {
60
268
  const expresionRegularEqual = /Equal\(".+"\)+/g;
61
- const contieneEqual = sinNot.match(expresionRegularEqual);
269
+ const contieneEqual = campo.match(expresionRegularEqual);
62
270
  if (contieneEqual) {
63
- campo = sinNot
64
- .replace('Equal("', '')
65
- .replace('")', '');
66
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo})`;
271
+ campo = campo
272
+ .replace('Equal("', '').replace('")', '');
273
+ const consulta = `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}`;
67
274
  noEncuentraOperador = false;
68
275
  const respuestaADevolver = {
69
276
  consulta,
@@ -75,9 +282,9 @@ export function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, ni
75
282
  }
76
283
  if (noEncuentraOperador) {
77
284
  const expresionRegularBetween = /Between\(".+"\)+/g;
78
- const contieneBetween = sinNot.match(expresionRegularBetween);
285
+ const contieneBetween = campo.match(expresionRegularBetween);
79
286
  if (contieneBetween) {
80
- const busqueda = [...sinNot
287
+ const busqueda = [...campo
81
288
  .replace('Between("', '')
82
289
  .replace('")', '')
83
290
  .replace(' ', '')
@@ -92,7 +299,7 @@ export function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, ni
92
299
  if (esFecha) {
93
300
  const fechaInicio = new Date(busqueda[0].substring(0, 4), busqueda[0].substring(5, 7) - 1, busqueda[0].substring(8));
94
301
  const fechaFin = new Date(busqueda[1].substring(0, 4), busqueda[1].substring(5, 7) - 1, busqueda[1].substring(8));
95
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin )`;
302
+ const consulta = `${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin `;
96
303
  noEncuentraOperador = false;
97
304
  const respuestaADevolver = {
98
305
  consulta,
@@ -103,7 +310,7 @@ export function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, ni
103
310
  return respuestaADevolver;
104
311
  }
105
312
  else {
106
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin )`;
313
+ const consulta = `${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin`;
107
314
  noEncuentraOperador = false;
108
315
  const respuestaADevolver = {
109
316
  consulta,
@@ -113,32 +320,42 @@ export function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, ni
113
320
  respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Fin'] = busqueda[1];
114
321
  return respuestaADevolver;
115
322
  }
116
- noEncuentraOperador = false;
117
323
  }
118
324
  }
119
325
  if (noEncuentraOperador) {
120
326
  const expresionRegularIn = /In\(.+\)+/g;
121
- const contieneIn = sinNot.match(expresionRegularIn);
327
+ const contieneIn = campo.match(expresionRegularIn);
122
328
  if (contieneIn) {
123
329
  let arregloIn;
124
330
  try {
125
- arregloIn = JSON.parse(sinNot
331
+ arregloIn = JSON.parse(campo
126
332
  .replace('In(', '')
127
333
  .replace('])', ']'));
128
- const objetoIn = {};
129
- let IN = '';
130
- arregloIn
131
- .forEach((campoIn, indice) => {
132
- IN = IN + ((indice + 1) === arregloIn.length ? `':mlab${propiedadPapa}${nivel}${indice}${campoIn}'` : `:mlab'${propiedadPapa}${nivel}${indice}${campoIn}',`);
133
- objetoIn[`mlab${propiedadPapa}${nivel}${indice}${campoIn}`] = campoIn;
134
- });
135
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} IN( ${IN} ) )`;
136
- noEncuentraOperador = false;
137
- const respuestaADevolver = {
138
- consulta,
139
- objeto: objetoIn
140
- };
141
- return respuestaADevolver;
334
+ if (arregloIn.length > 0) {
335
+ const objetoIn = {};
336
+ let IN = '';
337
+ arregloIn
338
+ .forEach((campoIn, indice) => {
339
+ IN = IN + ((indice + 1) === arregloIn.length ? `:mlab${propiedadPapa}${nivel}${indice}${campoIn}` : `:mlab${propiedadPapa}${nivel}${indice}${campoIn},`);
340
+ objetoIn[`mlab${propiedadPapa}${nivel}${indice}${campoIn}`] = campoIn;
341
+ });
342
+ const consulta = `${propiedadPapa}.${nombreCampo} IN( ${IN} )`;
343
+ noEncuentraOperador = false;
344
+ const respuestaADevolver = {
345
+ consulta,
346
+ objeto: objetoIn
347
+ };
348
+ return respuestaADevolver;
349
+ }
350
+ else {
351
+ const consulta = ``;
352
+ noEncuentraOperador = false;
353
+ const respuestaADevolverDeINVacio = {
354
+ consulta,
355
+ objeto: {}
356
+ };
357
+ return respuestaADevolverDeINVacio;
358
+ }
142
359
  }
143
360
  catch (error) {
144
361
  console.error({
@@ -157,9 +374,9 @@ export function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, ni
157
374
  }
158
375
  if (noEncuentraOperador) {
159
376
  const expresionRegularIsNull = /IsNull\(\)+/g;
160
- const contieneIsNull = sinNot.match(expresionRegularIsNull);
377
+ const contieneIsNull = campo.match(expresionRegularIsNull);
161
378
  if (contieneIsNull) {
162
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} IS NULL )`;
379
+ const consulta = `${propiedadPapa}.${nombreCampo} IS NULL`;
163
380
  noEncuentraOperador = false;
164
381
  const respuestaADevolver = {
165
382
  consulta,
@@ -168,194 +385,25 @@ export function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, ni
168
385
  return respuestaADevolver;
169
386
  }
170
387
  }
171
- const consultaSinOperadoresNot = `${propiedadPapa}.${nombreCampo} <> :${propiedadPapa}${nivel}${nombreCampo} OR ${propiedadPapa}.${nombreCampo} IS NULL`;
172
- noEncuentraOperador = false;
173
- const respuestaADevolverSinOperadoresNot = {
174
- consulta: consultaSinOperadoresNot,
175
- objeto: {}
176
- };
177
- respuestaADevolverSinOperadoresNot.objeto[propiedadPapa + nivel + nombreCampo] = sinNot;
178
- return respuestaADevolverSinOperadoresNot;
179
- }
180
- } // Fin de NOT
181
- if (noEncuentraOperador) {
182
- const expresionRegularLike = /Like\(".+"\)+/g;
183
- const contieneLike = campo.match(expresionRegularLike);
184
- if (contieneLike) {
185
- campo = campo
186
- .replace('Like("', '')
187
- .replace('")', '');
188
- const consulta = `${propiedadPapa}.${nombreCampo} LIKE :${propiedadPapa}${nivel}${nombreCampo}`;
189
- noEncuentraOperador = false;
190
- const respuestaADevolver = {
191
- consulta,
192
- objeto: {}
193
- };
194
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
195
- return respuestaADevolver;
196
- }
197
- }
198
- if (noEncuentraOperador) {
199
- const expresionRegularLessThan = /LessThan\(".+"\)+/g;
200
- const contieneLessThan = campo.match(expresionRegularLessThan);
201
- if (contieneLessThan) {
202
- campo = campo
203
- .replace('LessThan("', '')
204
- .replace('")', '');
205
- const consulta = `${propiedadPapa}.${nombreCampo} < :${propiedadPapa}${nivel}${nombreCampo}`;
206
- noEncuentraOperador = false;
207
- const respuestaADevolver = {
208
- consulta,
209
- objeto: {}
210
- };
211
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
212
- return respuestaADevolver;
213
- }
214
- }
215
- if (noEncuentraOperador) {
216
- const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
217
- const contieneMoreThan = campo.match(expresionRegularMoreThan);
218
- if (contieneMoreThan) {
219
- campo = campo.replace('MoreThan("', '')
220
- .replace('")', '');
221
- const consulta = `${propiedadPapa}.${nombreCampo} > :${propiedadPapa}${nivel}${nombreCampo}`;
222
- noEncuentraOperador = false;
223
- const respuestaADevolver = {
224
- consulta,
225
- objeto: {}
226
- };
227
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
228
- return respuestaADevolver;
229
- }
230
- }
231
- if (noEncuentraOperador) {
232
- const expresionRegularEqual = /Equal\(".+"\)+/g;
233
- const contieneEqual = campo.match(expresionRegularEqual);
234
- if (contieneEqual) {
235
- campo = campo
236
- .replace('Equal("', '').replace('")', '');
237
- const consulta = `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}`;
388
+ const consultaSinOperadores = `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}`;
238
389
  noEncuentraOperador = false;
239
- const respuestaADevolver = {
240
- consulta,
390
+ const respuestaADevolverSinOperadores = {
391
+ consulta: consultaSinOperadores,
241
392
  objeto: {}
242
393
  };
243
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
244
- return respuestaADevolver;
245
- }
246
- }
247
- if (noEncuentraOperador) {
248
- const expresionRegularBetween = /Between\(".+"\)+/g;
249
- const contieneBetween = campo.match(expresionRegularBetween);
250
- if (contieneBetween) {
251
- const busqueda = [...campo
252
- .replace('Between("', '')
253
- .replace('")', '')
254
- .replace(' ', '')
255
- .split(',')
256
- .map((n) => isNaN(n) ? n : +n)];
257
- const esFecha = busqueda[0].length === 10 &&
258
- busqueda[0].length === 10 &&
259
- (typeof busqueda[0] === 'string') &&
260
- (typeof busqueda[1] === 'string') &&
261
- busqueda[0].match('-') &&
262
- busqueda[1].match('-');
263
- if (esFecha) {
264
- const fechaInicio = new Date(busqueda[0].substring(0, 4), busqueda[0].substring(5, 7) - 1, busqueda[0].substring(8));
265
- const fechaFin = new Date(busqueda[1].substring(0, 4), busqueda[1].substring(5, 7) - 1, busqueda[1].substring(8));
266
- const consulta = `${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin `;
267
- noEncuentraOperador = false;
268
- const respuestaADevolver = {
269
- consulta,
270
- objeto: {}
271
- };
272
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Inicio'] = fechaInicio;
273
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Fin'] = fechaFin;
274
- return respuestaADevolver;
275
- }
276
- else {
277
- const consulta = `${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin`;
278
- noEncuentraOperador = false;
279
- const respuestaADevolver = {
280
- consulta,
281
- objeto: {}
282
- };
283
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Inicio'] = busqueda[0];
284
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Fin'] = busqueda[1];
285
- return respuestaADevolver;
286
- }
394
+ respuestaADevolverSinOperadores.objeto[propiedadPapa + nivel + nombreCampo] = campo;
395
+ return respuestaADevolverSinOperadores;
287
396
  }
288
- }
289
- if (noEncuentraOperador) {
290
- const expresionRegularIn = /In\(.+\)+/g;
291
- const contieneIn = campo.match(expresionRegularIn);
292
- if (contieneIn) {
293
- let arregloIn;
294
- try {
295
- arregloIn = JSON.parse(campo
296
- .replace('In(', '')
297
- .replace('])', ']'));
298
- if (arregloIn.length > 0) {
299
- const objetoIn = {};
300
- let IN = '';
301
- arregloIn
302
- .forEach((campoIn, indice) => {
303
- IN = IN + ((indice + 1) === arregloIn.length ? `:mlab${propiedadPapa}${nivel}${indice}${campoIn}` : `:mlab${propiedadPapa}${nivel}${indice}${campoIn},`);
304
- objetoIn[`mlab${propiedadPapa}${nivel}${indice}${campoIn}`] = campoIn;
305
- });
306
- const consulta = `${propiedadPapa}.${nombreCampo} IN( ${IN} )`;
307
- noEncuentraOperador = false;
308
- const respuestaADevolver = {
309
- consulta,
310
- objeto: objetoIn
311
- };
312
- return respuestaADevolver;
313
- }
314
- else {
315
- const consulta = ``;
316
- noEncuentraOperador = false;
317
- const respuestaADevolverDeINVacio = {
318
- consulta,
319
- objeto: {}
320
- };
321
- return respuestaADevolverDeINVacio;
322
- }
323
- }
324
- catch (error) {
325
- console.error({
326
- error,
327
- mensaje: 'No se pudo usar el In'
328
- });
329
- const consulta = ``;
330
- noEncuentraOperador = false;
331
- const respuestaADevolverDeINVacio = {
332
- consulta,
333
- objeto: {}
334
- };
335
- return respuestaADevolverDeINVacio;
336
- }
337
- }
338
- }
339
- if (noEncuentraOperador) {
340
- const expresionRegularIsNull = /IsNull\(\)+/g;
341
- const contieneIsNull = campo.match(expresionRegularIsNull);
342
- if (contieneIsNull) {
343
- const consulta = `${propiedadPapa}.${nombreCampo} IS NULL`;
397
+ else {
398
+ const consultaSinOperadores = `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}`;
344
399
  noEncuentraOperador = false;
345
- const respuestaADevolver = {
346
- consulta,
400
+ const respuestaADevolverSinOperadores = {
401
+ consulta: consultaSinOperadores,
347
402
  objeto: {}
348
403
  };
349
- return respuestaADevolver;
404
+ respuestaADevolverSinOperadores.objeto[propiedadPapa + nivel + nombreCampo] = campo;
405
+ return respuestaADevolverSinOperadores;
350
406
  }
351
407
  }
352
- const consultaSinOperadores = `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}`;
353
- noEncuentraOperador = false;
354
- const respuestaADevolverSinOperadores = {
355
- consulta: consultaSinOperadores,
356
- objeto: {}
357
- };
358
- respuestaADevolverSinOperadores.objeto[propiedadPapa + nivel + nombreCampo] = campo;
359
- return respuestaADevolverSinOperadores;
360
408
  }
361
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhci1jYW1wb3MtY29uLWNvbmRpY2lvbmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9mdW5jaW9uZXMtdXRpbC9mdW5jaW9uZXMtYnVzcXVlZGEvZ2VuZXJhci1jYW1wb3MtY29uLWNvbmRpY2lvbmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0scUNBQ0osV0FBbUIsRUFDbkIsS0FBYSxFQUNiLGFBQXFCLEVBQ3JCLEtBQWE7SUFFYixPQUFPLENBQUMsR0FBRyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7SUFDL0QsSUFBSSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDL0IsSUFBSSxtQkFBbUIsRUFBRTtRQUN2QixNQUFNLG1CQUFtQixHQUFHLGVBQWUsQ0FBQztRQUM1QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDckQsSUFBSSxXQUFXLElBQUksbUJBQW1CLEVBQUU7WUFDdEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1RCxJQUFJLG1CQUFtQixFQUFFO2dCQUN2QixNQUFNLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDO2dCQUM5QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQ3hELElBQUksWUFBWSxFQUFFO29CQUNoQixLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDcEIsUUFBUSxFQUFFLEVBQUUsQ0FDYjt5QkFDRSxPQUFPLENBQ04sSUFBSSxFQUFFLEVBQUUsQ0FDVCxDQUFDO29CQUNKLE1BQU0sUUFBUSxHQUFHLFFBQVEsYUFBYSxJQUFJLFdBQVcsVUFBVSxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsSUFBSSxDQUFDO29C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
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhci1jYW1wb3MtY29uLWNvbmRpY2lvbmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9mdW5jaW9uZXMtdXRpbC9mdW5jaW9uZXMtYnVzcXVlZGEvZ2VuZXJhci1jYW1wb3MtY29uLWNvbmRpY2lvbmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxNQUFNLHFDQUNKLFdBQW1CLEVBQ25CLEtBQXFCLEVBQ3JCLGFBQXFCLEVBQ3JCLEtBQWE7SUFFYixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDdEIsS0FBZSxDQUFDO0lBQ2hCLElBQUk7UUFDRixTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNsQztJQUFDLE9BQU8sQ0FBQyxFQUFFO0tBQ1g7SUFDRCxJQUFJLFNBQVMsRUFBRTtRQUNiLElBQUksVUFBVSxHQUFHLEtBQWMsQ0FBQztRQUNoQyxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFVBQVU7YUFDUCxPQUFPLENBQ04sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7Z0JBQzdCLE1BQU0sdUJBQXVCLEdBQUcsY0FBYyxDQUM1QyxXQUFXLEVBQ1gsS0FBSyxFQUNMLGFBQWEsRUFDYixLQUFLLENBQ04sQ0FBQztnQkFDRixRQUFRLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN2RCx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDbEMsdUJBQXVCLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FDNUMsQ0FBQztnQkFDRixNQUFNLEdB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