composeFilter method
dynamic
composeFilter(
- FilterParams? filter
Implementation
dynamic composeFilter(FilterParams? filter) {
filter = filter ?? FilterParams();
var criteria = [];
var search = filter.getAsNullableString('search');
if (search != null) {
var searchRegex = RegExp(r'^' + search, caseSensitive: false);
var searchCriteria = [];
searchCriteria.add({
'login': {r'$regex': searchRegex.pattern}
});
searchCriteria.add({
'name': {r'$regex': searchRegex.pattern}
});
criteria.add({r'$or': searchCriteria});
}
var id = filter.getAsNullableString('id');
if (id != null) {
criteria.add({'_id': id});
}
var ids = filter.getAsObject('ids');
if (ids is String) {
ids = ids.split(',');
}
if (ids is List) {
criteria.add({
'_id': {r'$in': ids}
});
}
var name = filter.getAsNullableString('name');
if (name != null) {
criteria.add({'name': name});
}
var login = filter.getAsNullableString('login');
if (login != null) {
criteria.add({'login': login});
}
var active = filter.getAsNullableBoolean('active');
if (active != null) {
criteria.add({'active': active});
}
var toTime = filter.getAsNullableDateTime('to_create_time');
if (toTime != null) {
criteria.add({
'create_time': {r'$lt': toTime}
});
}
var fromTime = filter.getAsNullableDateTime('from_create_time');
if (fromTime != null) {
criteria.add({
'create_time': {r'$gte': fromTime}
});
}
var deleted = filter.getAsBooleanWithDefault('deleted', false);
if (!deleted) {
criteria.add({
r'$or': [
{'deleted': false},
{
'deleted': {r'$exists': false}
}
]
});
}
return criteria.isNotEmpty ? {r'$and': criteria} : null;
}