using AsbCloudApp.Data;
using AsbCloudApp.Requests;
using AsbCloudInfrastructure.Services.SAUB;
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? GetOrDefaultCachedDataDateRange(int idTelemetry);
///
/// Получить диапазон дат телеметрии.
/// Дата первой записи телеметрии храниться отдельно и запоняется при инициализации
///
///
///
DatesRangeDto? GetOrDefaultWellDataDateRange(int idTelemetry);
///
/// Получение первой и последней записи телеметрии.
/// Первая запись телеметрии храниться отдельно и запоняется при инициализации
///
///
///
(TDto First, TDto Last)? GetOrDefaultFirstLast(int idTelemetry);
///
/// статистика хранимой телеметрии по всем кешированым
///
///
IEnumerable GetStat();
///
/// Получить ключи телеметрии по параметрам запроса
///
///
///
IEnumerable GetIds(TelemetryDataRequest request);
}