storeAllFromJson method
FutureOr<Map<String, List<Object> > >
storeAllFromJson(
- Map<
String, Iterable< entries, {Map< >String, dynamic> > - Transaction? transaction,
- EntityResolutionRules? resolutionRules,
- Map<
String, dynamic> ? variables,
Implementation
FutureOr<Map<String, List<Object>>> storeAllFromJson(
Map<String, Iterable<Map<String, dynamic>>> entries,
{Transaction? transaction,
EntityResolutionRules? resolutionRules,
Map<String, dynamic>? variables}) async {
var results = <String, List<Object>>{};
var allRepositoriesBuildOrder =
allRepositories().values.toList(growable: false);
var entriesRepositoriesOrdered = entries.entries.map((e) {
var typeName = e.key;
var entities = e.value;
var entityRepository = getEntityRepository(name: typeName);
return MapEntry(typeName, (entities, entityRepository));
}).sorted((a, b) {
var rep1 = a.value.$2;
var rep2 = b.value.$2;
var idx1 = rep1 != null ? allRepositoriesBuildOrder.indexOf(rep1) : -1;
var idx2 = rep2 != null ? allRepositoriesBuildOrder.indexOf(rep2) : -1;
if (idx1 < 0) {
idx1 = 9999999;
}
if (idx2 < 0) {
idx2 = 9999999;
}
return idx1.compareTo(idx2);
}).toMapFromEntries();
_log.info('Repositories build order:');
for (var e in entriesRepositoriesOrdered.entries) {
var typeName = e.key;
_log.info(' -- $typeName');
}
for (var e in entriesRepositoriesOrdered.entries) {
var typeName = e.key;
var typeEntries = e.value.$1;
var entityRepository = e.value.$2;
if (typeEntries.isEmpty) {
results[typeName] = [];
continue;
}
_log.info(
'Populating `$typeName`: ${typeEntries.length} JSON entries...$_logSectionOpen');
if (entityRepository == null) {
throw StateError(
"Can't find `EntityRepository` for type name: $typeName");
}
try {
var os = await entityRepository.storeAllFromJson(typeEntries,
resolutionRules: resolutionRules);
results[typeName] = os;
_log.info(
'Populated `$typeName` entries: ${os.length}$_logSectionClose');
} catch (e, s) {
_log.severe('Error population `$typeName` entries.', e, s);
rethrow;
}
}
return results;
}