rangeDigest method

  1. @override
Future<RangeDigest> rangeDigest(
  1. String table, {
  2. String? fromHlc,
  3. String? toHlc,
})
override

One pass over the full changeset — this engine is in-memory anyway.

Implementation

@override
Future<RangeDigest> rangeDigest(
  String table, {
  String? fromHlc,
  String? toHlc,
}) {
  final from = fromHlc == null ? null : Hlc.parse(fromHlc);
  final to = toHlc == null ? null : Hlc.parse(toHlc);
  final builder = RangeDigestBuilder();
  for (final record in _crdt.getChangeset(onlyTables: [table])[table] ??
      const <Map<String, Object?>>[]) {
    final hlc = record['hlc'] as Hlc;
    if (from != null && hlc <= from) continue;
    if (to != null && hlc > to) continue;
    builder.add(record['key'] as String, hlc);
  }
  return Future.value(builder.build());
}