queryConstruction method
Implementation
Query queryConstruction(Query query,
{List<QueryType>? where,
Map<String, bool>? orderby,
int? limit,
DocumentSnapshot? startAfter}) {
try {
where?.forEach((value) {
switch (value.whereQueryType) {
case WhereQueryType.isEqualTo:
query = query.where(value.id, isEqualTo: value.value);
break;
case WhereQueryType.isLessThan:
query = query.where(value.id, isLessThan: value.value);
break;
case WhereQueryType.isLessThanOrEqualTo:
query = query.where(value.id, isLessThanOrEqualTo: value.value);
break;
case WhereQueryType.isGreaterThan:
query = query.where(value.id, isGreaterThan: value.value);
break;
case WhereQueryType.isGreaterThanOrEqualTo:
query = query.where(value.id, isGreaterThanOrEqualTo: value.value);
break;
case WhereQueryType.arrayContains:
query = query.where(value.id, arrayContains: value.value);
break;
case WhereQueryType.arrayContainsAny:
query = query.where(value.id, arrayContainsAny: value.value);
break;
case WhereQueryType.whereIn:
query = query.where(value.id, whereIn: value.value);
break;
case WhereQueryType.whereNotIn:
query = query.where(value.id, whereNotIn: value.value);
break;
case WhereQueryType.isNull:
query = query.where(value.id, isNull: value.value);
break;
case WhereQueryType.isNotEqualTo:
query = query.where(value.id, isNotEqualTo: value.value);
break;
default:
var type = value.whereQueryType;
throw UnknownQueryError(
'Unknown query type $type', StackTrace.current);
}
});
if (orderby != null) {
orderby.forEach((key, value) {
query = query.orderBy(key, descending: value);
});
}
if (startAfter != null) {
query = query.startAfterDocument(startAfter);
}
if (limit != null) {
query = query.limit(limit);
}
return query;
} catch (err, s) {
throw FailedQueryConstructionError(err.toString(), s);
}
}