bulkGet method
Implementation
Future<Map<String, Map<String, dynamic>>> bulkGet(
List<String> ids, {
int chunkSize = 500,
}) async {
final results = <String, Map<String, dynamic>>{};
final prefix = '$_name/';
if (_local || !_ws.isConnected) {
for (final id in ids) {
final data = await _readLocal('$_name/$id');
if (data != null && data.isNotEmpty) {
results[id] = await _decodeBytes(data);
}
}
return results;
}
for (var i = 0; i < ids.length; i += chunkSize) {
final end = math.min(i + chunkSize, ids.length);
final chunkIds = ids.sublist(i, end);
final blockIds = chunkIds.map((id) => '$_name/$id').toList();
final raw = await _ws.bulkGet(blockIds);
for (final entry in raw.entries) {
if (entry.value == null || entry.value!.isEmpty) continue;
final docId = entry.key.startsWith(prefix)
? entry.key.substring(prefix.length)
: entry.key;
results[docId] = await _decodeBytes(entry.value!);
}
}
return results;
}