using AsbCloudApp.Data; using AsbCloudApp.Requests; using System; using System.Collections.Generic; namespace AsbCloudApp.Repositories { /// <summary> /// Хранилище кеша /// </summary> /// <typeparam name="TDto"></typeparam> public interface ITelemetryDataCache<TDto> where TDto : ITelemetryData { /// <summary> /// добавить в кеш чанк записей по телеметрии /// </summary> /// <param name="idTelemetry"></param> /// <param name="range"></param> void AddRange(int idTelemetry, IEnumerable<TDto> range); /// <summary> /// вернуть последнюю записть /// </summary> /// <param name="idTelemetry"></param> /// <returns></returns> TDto? GetLastOrDefault(int idTelemetry); /// <summary> /// Получить кешированые записи /// </summary> /// <param name="idTelemetry"></param> /// <param name="dateBegin"></param> /// <param name="intervalSec"></param> /// <param name="approxPointsCount">приблизительное кол-во возвращаемых записей после их прореживания</param> /// <returns></returns> IEnumerable<TDto>? GetOrDefault(int idTelemetry, DateTime dateBegin, double intervalSec = 600, int approxPointsCount = 1024); /// <summary> /// Получить кешированые записи /// </summary> /// <param name="idTelemetry"></param> /// <param name="request"></param> /// <returns></returns> IEnumerable<TDto>? GetOrDefault(int idTelemetry, TelemetryDataRequest request); /// <summary> /// Диапазон дат находящийся в кеше /// </summary> /// <param name="idTelemetry"></param> /// <returns></returns> DatesRangeDto? GetOrDefaultCachedaDateRange(int idTelemetry); /// <summary> /// Получить диапазон дат телеметрии. /// Дата первой записи телеметрии храниться отдельно и запоняется при инициализации /// </summary> /// <param name="idTelemetry"></param> /// <returns></returns> DatesRangeDto? GetOrDefaultDataDateRange(int idTelemetry); /// <summary> /// Получение первой и последней записи телеметрии. /// Первая запись телеметрии храниться отдельно и запоняется при инициализации /// </summary> /// <param name="idTelemetry"></param> /// <returns></returns> (TDto First, TDto Last)? GetOrDefaultFirstLast(int idTelemetry); } }