resolveSubEntitiesFields static method
FutureOr<Map<String, dynamic> >
resolveSubEntitiesFields(
- Map<
String, dynamic> fields, - Map<
String, Type> subEntitiesFields, { - Object? fromMap()?,
- Object? empty(
- String field
- EntityRepositoryProvider? entityRepositoryProvider,
- EntityHandlerProvider? entityHandlerProvider,
- EntityProvider? entityProvider,
- EntityCache? entityCache,
- EntityResolutionRules? resolutionRules,
Implementation
static FutureOr<Map<String, dynamic>> resolveSubEntitiesFields(
Map<String, dynamic> fields, Map<String, Type> subEntitiesFields,
{Object? Function(String field, Map<String, dynamic> map)? fromMap,
Object? Function(String field)? empty,
EntityRepositoryProvider? entityRepositoryProvider,
EntityHandlerProvider? entityHandlerProvider,
EntityProvider? entityProvider,
EntityCache? entityCache,
EntityResolutionRules? resolutionRules}) {
if (subEntitiesFields.isEmpty) return fields;
entityCache ??= JsonEntityCacheSimple();
var entries = subEntitiesFields.entries.toList(growable: false);
var futures = entries.map((e) {
var f = e.key;
var t = e.value;
var fromMapField = fromMap != null ? (m) => fromMap(f, m) : null;
var emptyField = empty != null ? () => empty(f) : null;
return resolveEntityFromMap(
parentMap: fields,
entityField: f,
fromMap: fromMapField,
empty: emptyField,
entityType: t,
entityRepositoryProvider: entityRepositoryProvider,
entityHandlerProvider: entityHandlerProvider,
entityProvider: entityProvider,
entityCache: entityCache,
resolutionRules: resolutionRules);
});
return futures.resolveAllJoined((resolvedEntities) {
var map2 = Map<String, dynamic>.from(fields);
for (var i = 0; i < entries.length; ++i) {
var f = entries[i].key;
var o = resolvedEntities[i];
map2[f] = o;
}
return map2;
});
}