protected virtual async Task <TResult> CommitMutationsInternalAsync <TResult>(object mutations, bool returnIds = false, bool returnDocuments = false, SanityMutationVisibility visibility = SanityMutationVisibility.Sync, CancellationToken cancellationToken = default) { if (mutations == null) { throw new ArgumentNullException(nameof(mutations)); } var json = mutations is string?mutations as string : mutations is SanityMutationBuilder ? ((SanityMutationBuilder)mutations).Build(SerializerSettings) : JsonConvert.SerializeObject(mutations, Formatting.None, SerializerSettings); var response = await _httpClient.PostAsync($"data/mutate/{WebUtility.UrlEncode(_options.Dataset)}?returnIds={returnIds.ToString().ToLower()}&returnDocuments={returnDocuments.ToString().ToLower()}&visibility={visibility.ToString().ToLower()}", new StringContent(json, Encoding.UTF8, "application/json"), cancellationToken).ConfigureAwait(false); return(await HandleHttpResponseAsync <TResult>(response).ConfigureAwait(false)); }
public static Task <SanityMutationResponse <TDoc> > CommitAsync <TDoc>(this SanityMutationBuilder <TDoc> transactionBuilder, bool returnIds = false, bool returnDocuments = true, SanityMutationVisibility visibility = SanityMutationVisibility.Sync, CancellationToken cancellationToken = default) { var result = transactionBuilder.InnerBuilder.Client.CommitMutationsAsync <TDoc>(transactionBuilder.Build(), returnIds, returnDocuments, visibility, cancellationToken); transactionBuilder.Clear(); return(result); }
public virtual Task <SanityMutationResponse <TDoc> > CommitMutationsAsync <TDoc>(object mutations, bool returnIds = false, bool returnDocuments = true, SanityMutationVisibility visibility = SanityMutationVisibility.Sync, CancellationToken cancellationToken = default) { return(CommitMutationsInternalAsync <SanityMutationResponse <TDoc> >(mutations, returnIds, returnDocuments, visibility, cancellationToken)); }
public static Task <SanityMutationResponse <TDoc> > CommitChangesAsync <TDoc>(this SanityDocumentSet <TDoc> docs, bool returnIds = false, bool returnDocuments = false, SanityMutationVisibility visibility = SanityMutationVisibility.Sync, CancellationToken cancellationToken = default) { return(docs.Context.CommitAsync <TDoc>(returnIds, returnDocuments, visibility, cancellationToken)); }
/// <summary> /// Sends all changes registered on document sets of specified type to Sanity as a transactional set of mutations. /// </summary> /// <param name="returnIds"></param> /// <param name="returnDocuments"></param> /// <param name="visibility"></param> /// <returns></returns> public async Task <SanityMutationResponse <TDoc> > CommitAsync <TDoc>(bool returnIds = false, bool returnDocuments = false, SanityMutationVisibility visibility = SanityMutationVisibility.Sync, CancellationToken cancellationToken = default) { var mutations = Mutations.For <TDoc>(); if (mutations.Mutations.Count > 0) { var result = await Client.CommitMutationsAsync <TDoc>(mutations.Build(), returnIds, returnDocuments, visibility, cancellationToken).ConfigureAwait(false); mutations.Clear(); return(result); } throw new Exception($"No pending changes for document type {typeof(TDoc)}"); }
/// <summary> /// Sends all changes registered on Document sets to Sanity as a transactional set of mutations. /// </summary> /// <param name="returnIds"></param> /// <param name="returnDocuments"></param> /// <param name="visibility"></param> /// <returns></returns> public async Task <SanityMutationResponse> CommitAsync(bool returnIds = false, bool returnDocuments = false, SanityMutationVisibility visibility = SanityMutationVisibility.Sync, CancellationToken cancellationToken = default) { var result = await Client.CommitMutationsAsync(Mutations.Build(Client.SerializerSettings), returnIds, returnDocuments, visibility, cancellationToken).ConfigureAwait(false); Mutations.Clear(); return(result); }
public static Task <SanityMutationResponse> CommitAsync(this SanityMutationBuilder transactionBuilder, bool returnIds = false, bool returnDocuments = true, SanityMutationVisibility visibility = SanityMutationVisibility.Sync) { var result = transactionBuilder.Client.CommitMutationsAsync(transactionBuilder.Build(transactionBuilder.Client.SerializerSettings), returnIds, returnDocuments, visibility); transactionBuilder.Clear(); return(result); }
public virtual Task <SanityMutationResponse> CommitMutationsAsync(object mutations, bool returnIds = false, bool returnDocuments = true, SanityMutationVisibility visibility = SanityMutationVisibility.Sync) { return(CommitMutationsInternalAsync <SanityMutationResponse>(mutations, returnIds, returnDocuments, visibility)); }