compact method

DocHistory compact(
  1. int limit
)

Implementation

DocHistory compact(int limit) {
  final newDocs = Map<String, InternalDoc>();
  List<RevisionNode> newNodes = [];
  leafDocs.forEach((doc) {
    var i = 0;
    newDocs[doc.rev.toString()] = doc;
    Rev? currRev = doc.rev;
    do {
      var nodeToAdd = revisions.nodes
          .firstWhere((element) => element.rev == currRev)
          .copyWith();
      ++i;
      if (i >= limit) {
        nodeToAdd.prevRev = null;
      }
      newNodes.add(nodeToAdd);
      currRev = nodeToAdd.prevRev;
    } while (currRev != null);
  });

  return this
      .copyWith(revisions: RevisionTree(nodes: newNodes), docs: newDocs);
}