Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 4
0
        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));
                    }
                }
            }
        }
Ejemplo n.º 5
0
        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);
        }