@pxp-nd/flow 1.0.86 → 1.0.87
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/controllers/Flow.js +49 -45
- package/package.json +1 -1
package/dist/controllers/Flow.js
CHANGED
|
@@ -691,52 +691,54 @@ let Flow = class Flow extends core_1.Controller {
|
|
|
691
691
|
queryBuilder.andWhere(`f.${params.genericFilterFields} LIKE :genericFilterValue`, { genericFilterValue: `%${params.genericFilterValue}%` });
|
|
692
692
|
}
|
|
693
693
|
}
|
|
694
|
+
const applyDynamicFilters = (queryBuilder, filters, logicOperator) => {
|
|
695
|
+
console.log('applyDynamicFilters', queryBuilder);
|
|
696
|
+
filters.forEach((filter, index) => {
|
|
697
|
+
const { field, operator, value } = filter;
|
|
698
|
+
const queryField = `f.${field}`;
|
|
699
|
+
const parameterName = `filterValue${index}`;
|
|
700
|
+
let condition;
|
|
701
|
+
switch (operator) {
|
|
702
|
+
case 'contains':
|
|
703
|
+
condition = `${queryField} LIKE :${parameterName}`;
|
|
704
|
+
queryBuilder.setParameter(parameterName, `%${value}%`);
|
|
705
|
+
break;
|
|
706
|
+
case 'equals':
|
|
707
|
+
condition = `${queryField} = :${parameterName}`;
|
|
708
|
+
queryBuilder.setParameter(parameterName, value);
|
|
709
|
+
break;
|
|
710
|
+
case 'startsWith':
|
|
711
|
+
condition = `${queryField} LIKE :${parameterName}`;
|
|
712
|
+
queryBuilder.setParameter(parameterName, `${value}%`);
|
|
713
|
+
break;
|
|
714
|
+
case 'endsWith':
|
|
715
|
+
condition = `${queryField} LIKE :${parameterName}`;
|
|
716
|
+
queryBuilder.setParameter(parameterName, `%${value}`);
|
|
717
|
+
break;
|
|
718
|
+
case 'isEmpty':
|
|
719
|
+
condition = `${queryField} IS NULL OR ${queryField} = ''`;
|
|
720
|
+
break;
|
|
721
|
+
case 'isNotEmpty':
|
|
722
|
+
condition = `${queryField} IS NOT NULL AND ${queryField} <> ''`;
|
|
723
|
+
break;
|
|
724
|
+
case 'isAnyOf':
|
|
725
|
+
condition = `${queryField} IN (:...${parameterName})`;
|
|
726
|
+
queryBuilder.setParameter(parameterName, value.split(','));
|
|
727
|
+
break;
|
|
728
|
+
default:
|
|
729
|
+
throw new Error(`Operator ${operator} is not supported.`);
|
|
730
|
+
}
|
|
731
|
+
if (index === 0) {
|
|
732
|
+
queryBuilder.andWhere(condition);
|
|
733
|
+
}
|
|
734
|
+
else {
|
|
735
|
+
queryBuilder[logicOperator === 'OR' ? 'orWhere' : 'andWhere'](condition);
|
|
736
|
+
}
|
|
737
|
+
});
|
|
738
|
+
};
|
|
694
739
|
// Dynamic filters
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
//if (allowedColumns.includes(field)) {
|
|
698
|
-
const queryField = `f.${field}`;
|
|
699
|
-
const parameterName = `filterValue${index}`;
|
|
700
|
-
let condition;
|
|
701
|
-
switch (operator) {
|
|
702
|
-
case 'contains':
|
|
703
|
-
condition = `${queryField} LIKE :${parameterName}`;
|
|
704
|
-
queryBuilder.setParameter(parameterName, `%${value}%`);
|
|
705
|
-
break;
|
|
706
|
-
case 'equals':
|
|
707
|
-
condition = `${queryField} = :${parameterName}`;
|
|
708
|
-
queryBuilder.setParameter(parameterName, value);
|
|
709
|
-
break;
|
|
710
|
-
case 'startsWith':
|
|
711
|
-
condition = `${queryField} LIKE :${parameterName}`;
|
|
712
|
-
queryBuilder.setParameter(parameterName, `${value}%`);
|
|
713
|
-
break;
|
|
714
|
-
case 'endsWith':
|
|
715
|
-
condition = `${queryField} LIKE :${parameterName}`;
|
|
716
|
-
queryBuilder.setParameter(parameterName, `%${value}`);
|
|
717
|
-
break;
|
|
718
|
-
case 'isEmpty':
|
|
719
|
-
condition = `${queryField} IS NULL OR ${queryField} = ''`;
|
|
720
|
-
break;
|
|
721
|
-
case 'isNotEmpty':
|
|
722
|
-
condition = `${queryField} IS NOT NULL AND ${queryField} <> ''`;
|
|
723
|
-
break;
|
|
724
|
-
case 'isAnyOf':
|
|
725
|
-
condition = `${queryField} IN (:...${parameterName})`;
|
|
726
|
-
queryBuilder.setParameter(parameterName, value.split(',')); // Asume que `value` es una cadena separada por comas.
|
|
727
|
-
break;
|
|
728
|
-
// Puedes agregar más casos aquí si hay otros operadores.
|
|
729
|
-
default:
|
|
730
|
-
throw new Error(`Operator ${operator} is not supported.`);
|
|
731
|
-
}
|
|
732
|
-
if (index === 0) {
|
|
733
|
-
queryBuilder.andWhere(condition);
|
|
734
|
-
}
|
|
735
|
-
else {
|
|
736
|
-
queryBuilder[logicOperator === 'OR' ? 'orWhere' : 'andWhere'](condition);
|
|
737
|
-
}
|
|
738
|
-
//}
|
|
739
|
-
});
|
|
740
|
+
// Aplicar filtros dinámicos
|
|
741
|
+
applyDynamicFilters(queryBuilder, filters, logicOperator);
|
|
740
742
|
queryBuilder.groupBy([
|
|
741
743
|
'f.flow_id',
|
|
742
744
|
'f.vendor_id',
|
|
@@ -782,6 +784,8 @@ let Flow = class Flow extends core_1.Controller {
|
|
|
782
784
|
countQuery.andWhere(`f.${params.genericFilterFields} LIKE :genericFilterValue`, { genericFilterValue: `%${params.genericFilterValue}%` });
|
|
783
785
|
}
|
|
784
786
|
}
|
|
787
|
+
// Aplicar los mismos filtros dinámicos al query de conteo
|
|
788
|
+
applyDynamicFilters(countQuery, filters, logicOperator);
|
|
785
789
|
const totalCount = await countQuery.getRawOne();
|
|
786
790
|
const count = totalCount.count;
|
|
787
791
|
return { data, count };
|