/// <inheritdoc /> public Task <T> SourceAsync <T>( DocumentPath <T> document, Func <SourceDescriptor <T>, ISourceRequest> selector = null, CancellationToken cancellationToken = default(CancellationToken) ) where T : class => SourceAsync <T>(selector.InvokeOrDefault(new SourceDescriptor <T>(document.Self.Index, document.Self.Type, document.Self.Id)), cancellationToken);
/// <inheritdoc /> public Task <IUpdateResponse <TDocument> > UpdateAsync <TDocument, TPartialDocument>( DocumentPath <TDocument> documentPath, Func <UpdateDescriptor <TDocument, TPartialDocument>, IUpdateRequest <TDocument, TPartialDocument> > selector, CancellationToken cancellationToken = default(CancellationToken) ) where TDocument : class where TPartialDocument : class => UpdateAsync(selector?.Invoke(new UpdateDescriptor <TDocument, TPartialDocument>(documentPath)), cancellationToken);
/// <inheritdoc /> public Task <IExplainResponse <TDocument> > ExplainAsync <TDocument>(DocumentPath <TDocument> document, Func <ExplainDescriptor <TDocument>, IExplainRequest <TDocument> > selector, CancellationToken cancellationToken = default(CancellationToken) ) where TDocument : class => ExplainAsync <TDocument>(selector?.Invoke(new ExplainDescriptor <TDocument>(document)), cancellationToken);
/// <inheritdoc /> public IExplainResponse <TDocument> Explain <TDocument>(DocumentPath <TDocument> document, Func <ExplainDescriptor <TDocument>, IExplainRequest <TDocument> > selector ) where TDocument : class => Explain <TDocument>(selector?.Invoke(new ExplainDescriptor <TDocument>(document)));
/// <inheritdoc /> public Task <IGetResponse <T> > GetAsync <T>( DocumentPath <T> document, Func <GetDescriptor <T>, IGetRequest> selector = null, CancellationToken cancellationToken = default(CancellationToken) ) where T : class => GetAsync <T>(selector.InvokeOrDefault(new GetDescriptor <T>(document)), cancellationToken);
/// <inheritdoc /> public IGetResponse <T> Get <T>(DocumentPath <T> document, Func <GetDescriptor <T>, IGetRequest> selector = null) where T : class => Get <T>(selector.InvokeOrDefault(new GetDescriptor <T>(document)));
/// <inheritdoc /> public Task <IDeleteResponse> DeleteAsync <T>( DocumentPath <T> document, Func <DeleteDescriptor <T>, IDeleteRequest> selector = null, CancellationToken cancellationToken = default(CancellationToken) ) where T : class => DeleteAsync(selector.InvokeOrDefault(new DeleteDescriptor <T>(document.Self.Index, document.Self.Type, document.Self.Id)), cancellationToken);
/// <inheritdoc /> public IDeleteResponse Delete <T>(DocumentPath <T> document, Func <DeleteDescriptor <T>, IDeleteRequest> selector = null) where T : class => Delete(selector.InvokeOrDefault(new DeleteDescriptor <T>(document.Self.Index, document.Self.Type, document.Self.Id)));
/// <inheritdoc /> public IExistsResponse DocumentExists <T>(DocumentPath <T> document, Func <DocumentExistsDescriptor <T>, IDocumentExistsRequest> selector = null) where T : class => DocumentExists(selector.InvokeOrDefault(new DocumentExistsDescriptor <T>(document.Self.Index, document.Self.Type, document.Self.Id)));
/// <inheritdoc /> public IUpdateResponse <TDocument> Update <TDocument, TPartialDocument>(DocumentPath <TDocument> documentPath, Func <UpdateDescriptor <TDocument, TPartialDocument>, IUpdateRequest <TDocument, TPartialDocument> > selector ) where TDocument : class where TPartialDocument : class => Update(selector?.Invoke(new UpdateDescriptor <TDocument, TPartialDocument>(documentPath)));
/// <inheritdoc /> public IUpdateResponse <TDocument> Update <TDocument>(DocumentPath <TDocument> documentPath, Func <UpdateDescriptor <TDocument, TDocument>, IUpdateRequest <TDocument, TDocument> > selector ) where TDocument : class => Update <TDocument, TDocument>(documentPath, selector);
/// <inheritdoc /> public T Source <T>(DocumentPath <T> document, Func <SourceDescriptor <T>, ISourceRequest> selector = null) where T : class => Source <T>(selector.InvokeOrDefault(new SourceDescriptor <T>(document.Self.Index, document.Self.Type, document.Self.Id)));