public async Task CreateDataverseAsync(string dataverseName, CreateAnalyticsDataverseOptions?options = null) { options ??= new CreateAnalyticsDataverseOptions(); _logger.LogInformation("Attempting to create dataverse with name {dataverseName}", _redactor.MetaData(dataverseName)); try { dataverseName = UncompoundName(dataverseName); var ignoreStr = options.IgnoreIfExistsValue ? " IF NOT EXISTS" : string.Empty; var statement = $"CREATE DATAVERSE {dataverseName}{ignoreStr}"; await _client .QueryAsync <dynamic>(statement, options.CreateAnalyticsOptions()) .ConfigureAwait(false); } catch (DataverseExistsException) { _logger.LogError("Failed to create dataverse with name {dataverseName} because it already exists.", _redactor.MetaData(dataverseName)); throw; } catch (Exception exception) { _logger.LogError(exception, "Failed to create dataverse with name {dataverseName}", _redactor.MetaData(dataverseName)); throw; } }
public Task <IAnalyticsResult <T> > AnalyticsQueryAsync <T>(string statement, AnalyticsOptions options = default) { if (options == default) { options = new AnalyticsOptions(); } var query = new AnalyticsRequest(statement); query.ClientContextId(options.ClientContextId); query.Pretty(options.Pretty); query.IncludeMetrics(options.IncludeMetrics); query.NamedParameters = options.NamedParameters; query.PositionalArguments = options.PositionalParameters; if (options.Timeout.HasValue) { query.Timeout(options.Timeout.Value); } query.Priority(options.Priority); query.Deferred(options.Deferred); query.ConfigureLifespan(30); //TODO: use configuration.AnalyticsTimeout if (_analyticsClient == null) { _analyticsClient = new AnalyticsClient(_configuration); } return(_analyticsClient.QueryAsync <T>(query, options.CancellationToken)); }
/// <summary> /// Asynchronously sends an analytics request to the server. /// </summary> /// <typeparam name="T">The <see cref="Type" /> T of the body for each row (or document) result.</typeparam> /// <param name="analyticsRequest">The analytics request.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns></returns> public Task <IAnalyticsResult <T> > SendAsync <T>(IAnalyticsRequest analyticsRequest, CancellationToken cancellationToken) { Task <IAnalyticsResult <T> > result; if (_isDown) { result = Task.FromResult(HandleNodeUnavailable <T>(analyticsRequest)); } else { try { result = _analyticsClient.QueryAsync <T>(analyticsRequest, cancellationToken); } catch (Exception exception) { result = Task.FromResult <IAnalyticsResult <T> >(new AnalyticsResult <T> { Exception = exception, Message = exception.Message, Success = false, }); } } return(result); }