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); } }
private static async Task UpdatePersonName(ICouchbaseCollection collection, string documentId, Person person) { var mutationResult = await collection.MutateInAsync(documentId, builder => builder.Upsert("name", "Mr. " + person.Name)); }
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 })); }
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)); }