fromCsv method
CSV data List can be retrieved in NoSqlDatabase Map.
Specify the ID of the document as the key of Map and the data of the document as the value in DynamicMap.
CSVのデータListをNoSqlDatabaseで取得可能なMap。
MapのキーにドキュメントのIDを指定し、値にドキュメントのデータをDynamicMapで指定します。
Implementation
@override
Map<String, DynamicMap> fromCsv(List<List<dynamic>> csv) {
if (csv.length < 2) {
return {};
}
final header = csv.first;
final data = csv.skip(1).toList();
final result = <String, DynamicMap>{};
for (final row in data) {
final map = <String, dynamic>{};
for (var i = 0; i < header.length; i++) {
final r = _toAny(row[i]);
final id = header[i].toString().trim();
if (r != null) {
if (map.containsKey(id)) {
if (map[id] is List) {
map[id].add(r);
} else {
map[id] = [map[id], r];
}
} else {
map[id] = r;
}
} else if (map.containsKey(id)) {
if (map[id] is! List) {
map[id] = [map[id]];
}
}
}
final id = map[idKey].toString().trim();
if (id.startsWith(skipIdPrefix)) {
continue;
}
result[id] = _merged(map);
}
return result;
}