matchMany method
Match many related models to parents (for normal relations)
Implementation
List<Map<String, dynamic>> matchMany(
List<Map<String, dynamic>> models,
List<Map<String, dynamic>> results,
String relation,
String parentKey,
String relatedKey,
) {
if (models.isEmpty) {
return models;
}
// No early return on empty [results]: every parent still has to come
// back carrying an empty list, not a missing key.
Map<dynamic, List<Map<String, dynamic>>> dictionary = {};
for (var result in results) {
final key = result[relatedKey];
if (!dictionary.containsKey(key)) {
dictionary[key] = [];
}
dictionary[key]!.add(result);
}
models = models.map<Map<String, dynamic>>((Map<String, dynamic> model) {
final key = model[parentKey];
Map<String, dynamic> cloneModel = Map.from(model);
if (dictionary.containsKey(key)) {
cloneModel[relation] = dictionary[key];
} else {
cloneModel[relation] = [];
}
return cloneModel;
}).toList();
return models;
}