public static Task <IMutateInResult <TDocument> > MutateInAsync <TDocument>(this ICouchbaseCollection collection,
                                                                                    string id, Action <MutateInSpecBuilder <TDocument> > configureBuilder, Action <MutateInOptions> configureOptions)
        {
            var options = new MutateInOptions();

            configureOptions(options);

            return(collection.MutateInAsync(id, configureBuilder, options));
        }
        public static Task <IMutateInResult> MutateInAsync(this ICouchbaseCollection collection, string id,
                                                           IEnumerable <MutateInSpec> specs, Action <MutateInOptions> configureOptions)
        {
            var options = new MutateInOptions();

            configureOptions(options);

            return(collection.MutateInAsync(id, specs, options));
        }
        public static Task <IMutateInResult> MutateInAsync(this ICouchbaseCollection collection, string id,
                                                           Action <MutateInSpecBuilder> configureBuilder, MutateInOptions?options)
        {
            var mutateInSpec = new MutateInSpecBuilder();

            configureBuilder(mutateInSpec);

            return(collection.MutateInAsync(id, mutateInSpec.Specs, options));
        }
        public static Task <IMutateInResult> MutateInAsync(this ICouchbaseCollection collection, string id,
                                                           Action <MutateInSpecBuilder> configureBuilder)
        {
            var builder = new MutateInSpecBuilder();

            configureBuilder(builder);

            return(collection.MutateInAsync(id, builder.Specs, MutateInOptions.Default));
        }
        public static async Task <IMutateInResult <TDocument> > MutateInAsync <TDocument>(
            this ICouchbaseCollection collection, string id, Action <MutateInSpecBuilder <TDocument> > configureBuilder,
            MutateInOptions?options = null)
        {
            var serializer = options?.SerializerValue ??
                             collection.Scope.Bucket.Cluster.ClusterServices.GetRequiredService <ITypeSerializer>();

            var mutateInSpec = new MutateInSpecBuilder <TDocument>(serializer);

            configureBuilder(mutateInSpec);

            return(new MutateInResult <TDocument>(
                       await collection.MutateInAsync(id, mutateInSpec.Specs, options).ConfigureAwait(false)));
        }
        public async Task ClearTransactionMetadata(ICouchbaseCollection collection, string docId, ulong cas, bool isDeleted)
        {
            var opts = GetMutateInOptions(StoreSemantics.Replace).Cas(cas);

            if (isDeleted)
            {
                opts.AccessDeleted(true);
            }

            var specs = new MutateInSpec[]
            {
                MutateInSpec.Upsert(TransactionFields.TransactionInterfacePrefixOnly, (string?)null, isXattr: true),
                MutateInSpec.Remove(TransactionFields.TransactionInterfacePrefixOnly, isXattr: true)
            };

            _ = await collection.MutateInAsync(docId, specs, opts).CAF();
        }
        public async Task <(ulong updatedCas, MutationToken mutationToken)> MutateStagedInsert(ICouchbaseCollection collection, string docId, object content, IAtrRepository atr, ulong?cas = null)
        {
            List <MutateInSpec> specs = CreateMutationSpecs(atr, "insert", content);
            var opts = GetMutateInOptions(StoreSemantics.Insert)
                       .AccessDeleted(true)
                       .CreateAsDeleted(true);

            if (cas.HasValue)
            {
                opts.Cas(cas.Value).StoreSemantics(StoreSemantics.Replace);
            }
            else
            {
                opts.Cas(0);
            }

            var mutateResult = await collection.MutateInAsync(docId, specs, opts).CAF();

            return(mutateResult.Cas, mutateResult.MutationToken);
        }
        public async Task <(ulong updatedCas, MutationToken?mutationToken)> UnstageInsertOrReplace(ICouchbaseCollection collection, string docId, ulong cas, object finalDoc, bool insertMode)
        {
            if (insertMode)
            {
                var opts         = new InsertOptions().Defaults(_durability, _keyValueTimeout);
                var mutateResult = await collection.InsertAsync(docId, finalDoc, opts).CAF();

                return(mutateResult.Cas, mutateResult?.MutationToken);
            }
            else
            {
                var opts         = GetMutateInOptions(StoreSemantics.Replace).Cas(cas);
                var mutateResult = await collection.MutateInAsync(docId, specs =>
                                                                  specs.Upsert(TransactionFields.TransactionInterfacePrefixOnly, string.Empty,
                                                                               isXattr : true, createPath : true)
                                                                  .Remove(TransactionFields.TransactionInterfacePrefixOnly, isXattr : true)
                                                                  .SetDoc(finalDoc), opts).CAF();

                return(mutateResult.Cas, mutateResult?.MutationToken);
            }
        }
Esempio n. 9
0
 private static async Task UpdatePersonName(ICouchbaseCollection collection, string documentId, Person person)
 {
     var mutationResult = await collection.MutateInAsync(documentId, builder => builder.Upsert("name", "Mr. " + person.Name));
 }
Esempio n. 10
0
 private static async Task AddBookToPerson(ICouchbaseCollection collection, string documentId, string bookTitle)
 {
     // csupa kis betűvel (booksbytitle) nem csinál semmit, csak ha pontosan úgy adom meg, ahogy a property neve CB-ben szerepel
     // létezik ArrayPrepend() és ArrayInsert() is
     var mutateResult = await collection.MutateInAsync(documentId, builder => builder.ArrayAppend(BookByTitlePropertyPath, new[] { bookTitle }));
 }
Esempio n. 11
0
 private static async Task AddBookToPersonIfNotExists(ICouchbaseCollection collection, string documentId, string bookTitle)
 {
     // csak akkor adja hozzá, ha nincs a könyv címek között
     var mutateResult = await collection.MutateInAsync(documentId, builder => builder.ArrayAddUnique(BookByTitlePropertyPath, bookTitle));
 }
 public static Task <IMutateInResult> MutateInAsync(this ICouchbaseCollection collection, string id,
                                                    IEnumerable <MutateInSpec> specs)
 {
     return(collection.MutateInAsync(id, specs, MutateInOptions.Default));
 }