Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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;
                }
            }
        }