Beispiel #1
0
        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);
        }
Beispiel #3
0
 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));
 }
Beispiel #5
0
        /// <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)}");
        }
Beispiel #6
0
        /// <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);
        }
Beispiel #8
0
 public virtual Task <SanityMutationResponse> CommitMutationsAsync(object mutations, bool returnIds = false, bool returnDocuments = true, SanityMutationVisibility visibility = SanityMutationVisibility.Sync)
 {
     return(CommitMutationsInternalAsync <SanityMutationResponse>(mutations, returnIds, returnDocuments, visibility));
 }