getWhereParameters static method
Implementation
static String? getWhereParameters(
List<Column> columns, List<QueryFilter>? filters) {
if (filters == null) {
return null;
}
final whereParams = filters.map((filter) {
final Column attributeColumn = columns
.lastWhere((column) => column.attributeName == filter.attribute);
switch (filter.condition) {
case QueryCondition.In:
final List<String> values =
filter.value is List ? filter.value : [filter.value];
return '${filter.attribute} IN (${values.map((value) => '${QueryFilter.getTypedValue(attributeColumn, value)}').join(',')})';
case QueryCondition.Equal:
return '${filter.attribute} = ${QueryFilter.getTypedValue(attributeColumn, filter.value)}';
case QueryCondition.Like:
return '${filter.attribute} LIKE ${QueryFilter.getTypedValue(attributeColumn, filter.value)}';
case QueryCondition.Ilike:
return '${filter.attribute} LIKE ${QueryFilter.getTypedValue(attributeColumn, filter.value, isLikeFilter: true, filterCondition: filter.filterCondition, key: filter.key, keyValue: filter.keyValue)}';
case QueryCondition.LessThan:
return '${filter.attribute} < ${QueryFilter.getTypedValue(attributeColumn, filter.value)}';
case QueryCondition.LessThanOrEqualTo:
return '${filter.attribute} <= ${QueryFilter.getTypedValue(attributeColumn, filter.value)}';
case QueryCondition.GreaterThan:
return '${filter.attribute} > ${QueryFilter.getTypedValue(attributeColumn, filter.value)}';
case QueryCondition.GreaterThanOrEqualTo:
return '${filter.attribute} >= ${QueryFilter.getTypedValue(attributeColumn, filter.value)}';
default:
return null;
}
}).where((filter) => filter != null);
return whereParams.length > 0 ? whereParams.join(' AND ') : null;
}