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,
);
List<Map<String, dynamic>> entries;
if (results is! Iterable<Map<String, dynamic>>) {
entries = results.nonNulls.toList();
} else {
entries =
results is List<Map<String, dynamic>> ? results : results.toList();
}
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) {
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);
}
}