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