DD.WellWorkover.Cloud/AsbCloudApp/Repositories/ITelemetryDataCache.cs

82 lines
3.2 KiB
C#
Raw Permalink Normal View History

using AsbCloudApp.Data;
using AsbCloudApp.Requests;
using AsbCloudInfrastructure.Services.SAUB;
using System;
using System.Collections.Generic;
2024-08-19 10:01:07 +05:00
namespace AsbCloudApp.Repositories;
/// <summary>
/// Хранилище кеша
/// </summary>
/// <typeparam name="TDto"></typeparam>
public interface ITelemetryDataCache<TDto> where TDto : ITelemetryData
{
/// <summary>
2024-08-19 10:01:07 +05:00
/// добавить в кеш чанк записей по телеметрии
/// </summary>
2024-08-19 10:01:07 +05:00
/// <param name="idTelemetry"></param>
/// <param name="range"></param>
void AddRange(int idTelemetry, IEnumerable<TDto> range);
2024-08-19 10:01:07 +05:00
/// <summary>
/// вернуть последнюю запись
/// </summary>
/// <param name="idTelemetry"></param>
/// <returns></returns>
TDto? GetLastOrDefault(int idTelemetry);
2024-08-19 10:01:07 +05:00
/// <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);
2024-08-19 10:01:07 +05:00
/// <summary>
/// Получить кешированые записи
/// </summary>
/// <param name="idTelemetry"></param>
/// <param name="request"></param>
/// <returns></returns>
IEnumerable<TDto>? GetOrDefault(int idTelemetry, TelemetryDataRequest request);
2024-08-19 10:01:07 +05:00
/// <summary>
/// Диапазон дат находящийся в кеше
/// </summary>
/// <param name="idTelemetry"></param>
/// <returns></returns>
DatesRangeDto? GetOrDefaultCachedDataDateRange(int idTelemetry);
2024-08-19 10:01:07 +05:00
/// <summary>
/// Получить диапазон дат телеметрии.
/// Дата первой записи телеметрии храниться отдельно и запоняется при инициализации
/// </summary>
/// <param name="idTelemetry"></param>
/// <returns></returns>
DatesRangeDto? GetOrDefaultWellDataDateRange(int idTelemetry);
2024-08-19 10:01:07 +05:00
/// <summary>
/// Получение первой и последней записи телеметрии.
/// Первая запись телеметрии храниться отдельно и запоняется при инициализации
/// </summary>
/// <param name="idTelemetry"></param>
/// <returns></returns>
(TDto First, TDto Last)? GetOrDefaultFirstLast(int idTelemetry);
2024-08-19 10:01:07 +05:00
/// <summary>
/// статистика хранимой телеметрии по всем кешированым
/// </summary>
/// <returns></returns>
IEnumerable<TelemetryDataStatDto> GetStat();
2024-08-19 10:01:07 +05:00
/// <summary>
/// Получить ключи телеметрии по параметрам запроса
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
IEnumerable<int> GetIds(TelemetryDataRequest request);
}