fetch method
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);
}
}