queryDocuments method

  1. @override
Future<List<Map<String, dynamic>>> queryDocuments(
  1. String collection, {
  2. required Map<String, dynamic> where,
  3. int? limit,
  4. String? orderBy,
  5. bool descending = false,
})

Queries documents from the specified collection based on criteria

Implementation

@override
Future<List<Map<String, dynamic>>> queryDocuments(
  String collection, {
  required Map<String, dynamic> where,
  int? limit,
  String? orderBy,
  bool descending = false,
}) async {
  final coll = _collection(collection);
  final selector = _normalizeFilter(where);
  final docs = await coll.find(selector).toList();
  final results = docs.map(_normalizeDocument).toList();

  final orderField = orderBy?.trim();
  if (orderField != null && orderField.isNotEmpty) {
    results.sort((a, b) {
      final comparison = _compareValues(a[orderField], b[orderField]);
      return descending ? -comparison : comparison;
    });
  }

  if (limit != null && limit > 0 && results.length > limit) {
    return results.take(limit).toList();
  }

  return results;
}