docFields method

  1. @override
Future<Map<String, Map<String, Object?>>> docFields(
  1. String table,
  2. Iterable<String> docIds
)
override

One scan of the table, grouping only the requested documents.

Implementation

@override
Future<Map<String, Map<String, Object?>>> docFields(
    String table, Iterable<String> docIds) {
  final wanted = docIds.toSet();
  final out = <String, Map<String, Object?>>{};
  for (final e in _crdt.getMap(table).entries) {
    final sep = e.key.indexOf('\x1F');
    if (sep < 0) continue;
    final id = e.key.substring(0, sep);
    if (!wanted.contains(id)) continue;
    (out[id] ??= {})[e.key.substring(sep + 1)] = e.value;
  }
  return Future.value(out);
}