resolveFieldsValues method
FutureOr<Map<String, Object?> >
resolveFieldsValues(
- Map<
String, Object?> fields, { - O? o,
- EntityProvider? entityProvider,
- EntityCache? entityCache,
- EntityHandlerProvider? entityHandlerProvider,
- EntityRepositoryProvider? entityRepositoryProvider,
- EntityResolutionRules? resolutionRules,
Implementation
FutureOr<Map<String, Object?>> resolveFieldsValues(
Map<String, Object?> fields,
{O? o,
EntityProvider? entityProvider,
EntityCache? entityCache,
EntityHandlerProvider? entityHandlerProvider,
EntityRepositoryProvider? entityRepositoryProvider,
EntityResolutionRules? resolutionRules}) {
entityCache ??= JsonEntityCacheSimple();
final resolutionRulesResolved =
resolveEntityResolutionRules(resolutionRules);
var fieldsTypes = this.fieldsTypes(o);
var resolved = fields.entries.forEachAsync((e) {
var f = e.key;
var v = e.value;
var t = fieldsTypes[f];
var v2 = resolveFieldValue(f, t, v,
entityProvider: entityProvider,
entityCache: entityCache,
entityHandlerProvider: entityHandlerProvider,
entityRepositoryProvider: entityRepositoryProvider,
resolutionRules: resolutionRulesResolved);
if (t != null) {
if (t.isEntityReferenceType) {
var entityType = t.arguments0 ?? TypeInfo.tObject;
v2 = v2.resolveMapped((val) => entityType.toEntityReference(val,
type: entityType.type,
entityProvider: entityProvider,
entityHandlerProvider: entityHandlerProvider,
entityCache: entityCache));
} else if (t.isEntityReferenceListType) {
var entityType = t.arguments0 ?? TypeInfo.tObject;
v2 = v2.resolveMapped((val) => entityType.toEntityReferenceList(val,
type: entityType.type,
entityProvider: entityProvider,
entityHandlerProvider: entityHandlerProvider,
entityCache: entityCache));
}
}
return MapEntry(f, v2);
});
return resolved
.resolveMapped((l) => l.toMapFromEntries().resolveAllValuesNullable());
}