where method
DatumQueryBuilder<T>
where(
- String field, {
- dynamic isEqualTo,
- dynamic isNotEqualTo,
- dynamic isGreaterThan,
- dynamic isGreaterThanOrEqualTo,
- dynamic isLessThan,
- dynamic isLessThanOrEqualTo,
- String? contains,
- String? containsIgnoreCase,
- String? startsWith,
- String? endsWith,
- List? isIn,
- List? isNotIn,
- dynamic arrayContains,
- List? arrayContainsAny,
- String? matches,
- List? between,
Adds a filter condition to the query.
Supports dot notation for nested fields: 'user.profile.name'
Example: .where('age', isGreaterThan: 18)
Implementation
DatumQueryBuilder<T> where(
String field, {
dynamic isEqualTo,
dynamic isNotEqualTo,
dynamic isGreaterThan,
dynamic isGreaterThanOrEqualTo,
dynamic isLessThan,
dynamic isLessThanOrEqualTo,
String? contains,
String? containsIgnoreCase,
String? startsWith,
String? endsWith,
List<dynamic>? isIn,
List<dynamic>? isNotIn,
dynamic arrayContains,
List<dynamic>? arrayContainsAny,
String? matches,
List<dynamic>? between,
}) {
if (isEqualTo != null) {
_filters.add(Filter(field, FilterOperator.equals, isEqualTo));
}
if (isNotEqualTo != null) {
_filters.add(Filter(field, FilterOperator.notEquals, isNotEqualTo));
}
if (isGreaterThan != null) {
_filters.add(Filter(field, FilterOperator.greaterThan, isGreaterThan));
}
if (isGreaterThanOrEqualTo != null) {
_filters.add(
Filter(
field,
FilterOperator.greaterThanOrEqual,
isGreaterThanOrEqualTo,
),
);
}
if (isLessThan != null) {
_filters.add(Filter(field, FilterOperator.lessThan, isLessThan));
}
if (isLessThanOrEqualTo != null) {
_filters.add(
Filter(field, FilterOperator.lessThanOrEqual, isLessThanOrEqualTo),
);
}
if (contains != null) {
_filters.add(Filter(field, FilterOperator.contains, contains));
}
if (containsIgnoreCase != null) {
_filters.add(
Filter(field, FilterOperator.containsIgnoreCase, containsIgnoreCase),
);
}
if (startsWith != null) {
_filters.add(Filter(field, FilterOperator.startsWith, startsWith));
}
if (endsWith != null) {
_filters.add(Filter(field, FilterOperator.endsWith, endsWith));
}
if (isIn != null) {
_filters.add(Filter(field, FilterOperator.isIn, isIn));
}
if (isNotIn != null) {
_filters.add(Filter(field, FilterOperator.isNotIn, isNotIn));
}
if (arrayContains != null) {
_filters.add(Filter(field, FilterOperator.arrayContains, arrayContains));
}
if (arrayContainsAny != null) {
_filters.add(
Filter(field, FilterOperator.arrayContainsAny, arrayContainsAny),
);
}
if (matches != null) {
_filters.add(Filter(field, FilterOperator.matches, matches));
}
if (between != null) {
assert(between.length == 2, 'between requires exactly 2 values');
_filters.add(Filter(field, FilterOperator.between, between));
}
return this;
}