fromCsv method

  1. @override
Map<String, DynamicMap> fromCsv(
  1. List<List> csv
)
override

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のデータListNoSqlDatabaseで取得可能な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;
}