public IEnumerable <List <DocumentConflict> > GetAllConflictsBySameId(DocumentsOperationContext context) { var table = context.Transaction.InnerTransaction.OpenTable(ConflictsSchema, ConflictsSlice); var list = new List <DocumentConflict>(); LazyStringValue lastId = null; foreach (var tvr in table.SeekForwardFrom(ConflictsSchema.Indexes[IdAndChangeVectorSlice], Slices.Empty, 0)) { var conflict = TableValueToConflictDocument(context, ref tvr.Result.Reader); if (lastId != null && lastId.Equals(conflict.LowerId) == false) { yield return(list); list = new List <DocumentConflict>(); } list.Add(conflict); lastId = conflict.LowerId; } if (list.Count > 0) { yield return(list); } }
public IEnumerable <string> GetCountersForDocument(DocumentsOperationContext context, string docId) { var table = new Table(CountersSchema, context.Transaction.InnerTransaction); using (GetCounterPartialKey(context, docId, out var key)) { LazyStringValue prev = null; foreach (var result in table.SeekByPrimaryKeyPrefix(key, Slices.Empty, 0)) { var current = ExtractCounterName(context, result.Value.Reader); if (prev?.Equals(current) == true) { // already seen this one, skip it continue; } yield return(current); prev?.Dispose(); prev = current; } } }