resolveEntities method
FutureOr<List<O> >
resolveEntities(
- Transaction transaction,
- Iterable<
Map< ? results, {String, dynamic> ?> - EntityResolutionRules? resolutionRules,
Implementation
FutureOr<List<O>> resolveEntities(
Transaction transaction, Iterable<Map<String, dynamic>?>? results,
{EntityResolutionRules? resolutionRules}) {
if (results == null) return <O>[];
if (results is List && results.isEmpty) return <O>[];
final resolutionRulesResolved =
resolveEntityResolutionRules(resolutionRules);
Iterable<Map<String, dynamic>> entries;
if (results is! Iterable<Map<String, dynamic>>) {
entries = results.nonNulls;
} else {
entries = results;
}
var fieldsListEntity = _fieldsListEntity;
if (fieldsListEntity.isNotEmpty) {
var retTableScheme = repositoryAdapter.getTableScheme();
var retRelationshipFields =
_getRelationshipFields(fieldsListEntity, retTableScheme);
var ret = retTableScheme
.resolveOther<List<O>, Map<String, TableRelationshipReference>>(
retRelationshipFields, (tableScheme, relationshipFields) {
if (relationshipFields.isNotEmpty) {
entries = entries is List ? entries : entries.toList();
var resolveRelationshipsFields = _resolveRelationshipFields(
transaction,
tableScheme,
entries,
relationshipFields,
fieldsListEntity,
resolutionRulesResolved,
);
return resolveRelationshipsFields.resolveWith(() =>
_resolveEntitiesSubEntities(
transaction, resolutionRulesResolved, entries));
} else {
return _resolveEntitiesSubEntities(
transaction, resolutionRulesResolved, entries);
}
});
return _resolveEntitiesFutures(transaction, ret);
} else {
var ret = _resolveEntitiesSubEntities(
transaction, resolutionRulesResolved, entries);
return _resolveEntitiesFutures(transaction, ret);
}
}