using AsbCloudApp.Data; using AsbCloudApp.Requests; using AsbCloudInfrastructure.Services.SAUB; 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? GetOrDefaultCachedDateRange(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); /// <summary> /// статистика хранимой телеметрии по всем кешированым /// </summary> /// <returns></returns> IEnumerable<TelemetryDataStatDto> GetStat(); /// <summary> /// Получить ключи телеметрии по параметрам запроса /// </summary> /// <param name="request"></param> /// <returns></returns> IEnumerable<int> GetIds(TelemetryDataRequest request); } }