fetch method

Future<FSQueryResult<T>> fetch()

Fetches the results of the query.

Implementation

Future<FSQueryResult<T>> fetch() async {
  Deserializer? deserializer = FS.deserializers[T];
  final String? className = FS.classNames[T];
  if (deserializer == null || className == null) {
    throw UnsupportedError('No deserializer/class name found for type: $T. Consider re-generating Firestorm data classes.');
  }
  QuerySnapshot snapshot = await query.get(getOptions);
  List<T> results = [];
  List<QueryDocumentSnapshot> docs = snapshot.docs;
  String? lastID;
  for (QueryDocumentSnapshot doc in docs) {
    T object = deserializer(doc.data() as Map<String, dynamic>);
    results.add(object);
    lastID = doc.id;
  }
  if (results.isEmpty) { //if empty, just return empty list
    return FSQueryResult<T>(results, null, null);
  }
  else {
    return FSQueryResult<T>(results, docs[docs.length - 1], lastID);
  }
}