toDoc<T> method

Doc<T>? toDoc<T>(
  1. Rev rev,
  2. T fromT(
    1. Map<String, dynamic> json
    ), {
  3. required dynamic revLimit,
  4. bool showRevision = false,
  5. bool showRevInfo = false,
  6. dynamic showConflicts = false,
})

Implementation

Doc<T>? toDoc<T>(Rev rev, T Function(Map<String, dynamic> json) fromT,
    {required revLimit,
    bool showRevision = false,
    bool showRevInfo = false,
    showConflicts = false}) {
  final doc = docs[rev.toString()];
  if (doc == null) {
    return null;
  }
  Revisions? _revisions = getRevision(rev);
  List<RevsInfo>? _revsInfo;
  if (_revisions == null) {
    return null;
  }
  if (showRevInfo == true && winnerRev == rev) {
    _revsInfo = [];
    var index = _revisions.start;
    for (final id in _revisions.ids) {
      final rev = Rev(index: index, md5: id);
      if (docs[rev.toString()] != null) {
        _revsInfo.add(RevsInfo(rev: rev, status: 'available'));
      } else {
        _revsInfo.add(RevsInfo(rev: rev, status: 'missing'));
      }
      index -= 1;
    }
  }

  return Doc(
      id: id,
      model: fromT(doc.data),
      rev: doc.rev,
      deleted: doc.deleted,
      revisions: showRevision
          ? Revisions(
              start: _revisions.start,
              ids: _revisions.ids
                  .sublist(0, min(revLimit, _revisions.ids.length)))
          : null,
      revsInfo: _revsInfo,
      deletedConflicts: showConflicts && deletedConflicts.length > 0
          ? deletedConflicts.map((e) => e.rev).toList()
          : null,
      conflicts: showConflicts && conflicts.length > 0
          ? conflicts.map((e) => e.rev).toList()
          : null);
}