using Microsoft.Extensions.Logging; using Persistence.Client.Clients.Base; using Persistence.Client.Clients.Interfaces; using Persistence.Client.Clients.Interfaces.Refit; using Persistence.Models; namespace Persistence.Client.Clients; public class TimeSeriesClient<TDto> : BaseClient, ITimeSeriesClient<TDto> where TDto : class, new() { private readonly IRefitTimeSeriesClient<TDto> timeSeriesClient; public TimeSeriesClient(IRefitTimeSeriesClient<TDto> refitTechMessagesClient, ILogger<TimeSeriesClient<TDto>> logger) : base(logger) { this.timeSeriesClient = refitTechMessagesClient; } public async Task<int> AddRange(IEnumerable<TDto> dtos, CancellationToken token) { var result = await ExecutePostResponse( async () => await timeSeriesClient.AddRange(dtos, token), token); return result; } public async Task<IEnumerable<TDto>> Get(DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token) { var result = await ExecuteGetResponse<IEnumerable<TDto>>( async () => await timeSeriesClient.Get(dateBegin, dateEnd, token), token); return result; } public async Task<IEnumerable<TDto>> GetResampledData(DateTimeOffset dateBegin, double intervalSec = 600d, int approxPointsCount = 1024, CancellationToken token = default) { var result = await ExecuteGetResponse<IEnumerable<TDto>>( async () => await timeSeriesClient.GetResampledData(dateBegin, intervalSec, approxPointsCount, token), token); return result; } public async Task<DatesRangeDto?> GetDatesRange(CancellationToken token) { var result = await ExecuteGetResponse<DatesRangeDto?>( async () => await timeSeriesClient.GetDatesRange(token), token); return result; } public void Dispose() { timeSeriesClient.Dispose(); } }