public async Task <ICandle> TryGetFirstCandleAsync(CandlePriceType priceType, CandleTimeInterval timeInterval) { var candleEntity = await _tableStorage.GetTopRecordAsync(CandleHistoryEntity.GeneratePartitionKey(priceType)); return(candleEntity ?.Candles .First() .ToCandle(_assetPairId, priceType, candleEntity.DateTime, timeInterval)); }
private static TableQuery <CandleHistoryEntity> GetTableQuery( CandlePriceType priceType, CandleTimeInterval interval, DateTime from, DateTime to) { var partitionKey = CandleHistoryEntity.GeneratePartitionKey(priceType); var rowKeyFrom = CandleHistoryEntity.GenerateRowKey(from, interval); var rowKeyTo = CandleHistoryEntity.GenerateRowKey(to, interval); var pkeyFilter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey); var rowkeyFromFilter = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThanOrEqual, rowKeyFrom); var rowkeyToFilter = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.LessThanOrEqual, rowKeyTo); var rowkeyFilter = TableQuery.CombineFilters(rowkeyFromFilter, TableOperators.And, rowkeyToFilter); return(new TableQuery <CandleHistoryEntity> { FilterString = TableQuery.CombineFilters(pkeyFilter, TableOperators.And, rowkeyFilter) }); }