rez_core 1.1.5 → 1.1.6
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.
- package/dist/module/filter/service/filter.service.js +11 -9
- package/dist/module/filter/service/filter.service.js.map +1 -1
- package/dist/module/meta/controller/meta.controller.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/module/filter/service/filter.service.ts +37 -36
- package/src/module/meta/controller/meta.controller.ts +0 -1
package/package.json
CHANGED
|
@@ -249,11 +249,13 @@ export class FilterService {
|
|
|
249
249
|
): { query: string; params: any } | null {
|
|
250
250
|
if (!meta) return null;
|
|
251
251
|
|
|
252
|
-
|
|
252
|
+
let attr = filter.filter_attribute;
|
|
253
253
|
const val = filter.filter_value;
|
|
254
254
|
const op = filter.filter_operator;
|
|
255
255
|
const key = `param_${attr}_${Math.random().toString(36).substring(2, 8)}`;
|
|
256
256
|
|
|
257
|
+
if (meta.data_source_type === 'entity') attr = `${attr}_id`;
|
|
258
|
+
|
|
257
259
|
switch (meta.data_type) {
|
|
258
260
|
case 'text':
|
|
259
261
|
return this.buildTextCondition(attr, op, val, key);
|
|
@@ -344,16 +346,16 @@ export class FilterService {
|
|
|
344
346
|
) {
|
|
345
347
|
switch (op) {
|
|
346
348
|
case 'equal':
|
|
347
|
-
return { query: `e.${attr}
|
|
349
|
+
return { query: `e.${attr} = :${key}`, params: { [key]: val } };
|
|
348
350
|
|
|
349
351
|
case 'not_equal':
|
|
350
|
-
return { query: `e.${attr}
|
|
352
|
+
return { query: `e.${attr} != :${key}`, params: { [key]: val } };
|
|
351
353
|
|
|
352
354
|
case 'empty':
|
|
353
|
-
return { query: `e.${attr}
|
|
355
|
+
return { query: `e.${attr} IS NULL`, params: {} };
|
|
354
356
|
|
|
355
357
|
case 'not_empty':
|
|
356
|
-
return { query: `e.${attr}
|
|
358
|
+
return { query: `e.${attr} IS NOT NULL`, params: {} };
|
|
357
359
|
|
|
358
360
|
default:
|
|
359
361
|
throw new BadRequestException(`Unsupported operator for select: ${op}`);
|
|
@@ -361,41 +363,40 @@ export class FilterService {
|
|
|
361
363
|
}
|
|
362
364
|
|
|
363
365
|
private buildMultiSelectCondition(
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
) {
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
366
|
+
attr: string,
|
|
367
|
+
op: string,
|
|
368
|
+
val: any,
|
|
369
|
+
key: string,
|
|
370
|
+
) {
|
|
371
|
+
if ((op === 'equal' || op === 'not_equal') && !Array.isArray(val)) {
|
|
372
|
+
throw new BadRequestException(
|
|
373
|
+
`Value for multi-select must be an array for operator: ${op}`,
|
|
374
|
+
);
|
|
375
|
+
}
|
|
374
376
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
377
|
+
switch (op) {
|
|
378
|
+
case 'equal':
|
|
379
|
+
return {
|
|
380
|
+
query: `e.${attr} IN (:${key})`, // ✅ use (:key)
|
|
381
|
+
params: { [key]: val },
|
|
382
|
+
};
|
|
381
383
|
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
384
|
+
case 'not_equal':
|
|
385
|
+
return {
|
|
386
|
+
query: `e.${attr} NOT IN (:${key})`, // ✅ use (:key)
|
|
387
|
+
params: { [key]: val },
|
|
388
|
+
};
|
|
387
389
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
+
case 'empty':
|
|
391
|
+
return { query: `e.${attr} IS NULL`, params: {} };
|
|
390
392
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
+
case 'not_empty':
|
|
394
|
+
return { query: `e.${attr} IS NOT NULL`, params: {} };
|
|
393
395
|
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
396
|
+
default:
|
|
397
|
+
throw new BadRequestException(
|
|
398
|
+
`Unsupported operator for multiselect: ${op}`,
|
|
399
|
+
);
|
|
400
|
+
}
|
|
398
401
|
}
|
|
399
402
|
}
|
|
400
|
-
|
|
401
|
-
}
|