private async Task <List <TsdbTableEntity> > RetrieveAllForId(TKey id, Sort sort) { using (await _cc.ReadAsync().ConfigureAwait(false)) { var fullQuery = new TableQuery <TsdbTableEntity>() .Where(CreatePartitionFilter(id)); var query = await PerformQuery(fullQuery, true, sort).ConfigureAwait(false); if (sort == Sort.Ascending) { query.Reverse(); } return(query); } }
public async Task <MultiTaggedReadResult <TEntry, TMeasureType> > ReadGroupsAsync(string measureTypeName, IEnumerable <AggregatedField> fields, IEnumerable <KeyValuePair <string, string> > requiredTags, IEnumerable <string> groupByTags, Sort sort = Sort.Descending) { using (await _cc.ReadAsync().ConfigureAwait(false)) { await CreateDatabase().ConfigureAwait(false); requiredTags = requiredTags.ToList(); groupByTags = groupByTags.ToList(); var measureType = await _typeStorage.GetMeasureTypeAsync(measureTypeName).ConfigureAwait(false); var fieldQueryInfos = GetFieldQueryInfos(measureType, fields.ToArray()); var resultSet = await _client.ReadAsync <DynamicInfluxRow>(_database, CreateGroupedSelectQuery( measureType, fieldQueryInfos, requiredTags, groupByTags, sort )).ConfigureAwait(false); return(Convert(measureType, fieldQueryInfos, resultSet, sort)); } }
public async Task <MultiReadResult <TKey, TEntry> > ReadLatestAsync(IEnumerable <TKey> ids, int count) { using (await _cc.ReadAsync().ConfigureAwait(false)) { await CreateDatabase().ConfigureAwait(false); var resultSet = await _client.ReadAsync <TEntry>(_database, CreateLatestSelectQuery( ids, count )).ConfigureAwait(false); return(Convert(ids, resultSet, Sort.Descending)); } }
private async Task <MultiReadResult <TKey, TEntry> > RetrieveForIds(IEnumerable <TKey> ids, DateTime to, Sort sort) { await CreateTable().ConfigureAwait(false); using (await _cc.ReadAsync().ConfigureAwait(false)) { using (var connection = new SqlConnection(_connectionString)) { await connection.OpenAsync().ConfigureAwait(false); using (var tx = connection.BeginTransaction(IsolationLevel.ReadCommitted)) { var sqlEntries = await connection.QueryAsync <SqlEntry>( sql : Sql.GetBottomlessQuery(_tableName, sort), param : new { Ids = ids.Select(x => _keyConverter.Convert(x)).ToList(), To = to }, transaction : tx).ConfigureAwait(false); return(CreateReadResult(sqlEntries, ids, sort)); } } } }
private async Task <List <TEntry> > ReadInternal(TableQuery <TsdbTableEntity> query, ITable suffix, Sort sort, int?take) { var table = GetTable(suffix); List <TEntry> results = new List <TEntry>(); int taken = 0; TableContinuationToken token = null; do { using (await _cc.ReadAsync().ConfigureAwait(false)) { var filteredQuery = query; if (take.HasValue) { int toTake = take.Value - taken; filteredQuery = filteredQuery.Take(toTake); } var rows = await table.ExecuteQuerySegmentedAsync(filteredQuery, token).ConfigureAwait(false); var entries = Convert(rows); results.AddRange(entries); token = rows.ContinuationToken; taken += rows.Results.Count; } }while(token != null && (!take.HasValue || taken < take)); if (sort == Sort.Ascending) { results.Reverse(); } return(results); }