using Persistence.Models;
namespace Persistence.Repositories;
///
/// Репозиторий для хранения разных наборов данных временных рядов.
/// idDiscriminator - идентифицирует конкретный набор данных, прим.: циклы измерения АСИБР, или отчет о DrillTest.
/// idDiscriminator формируют клиенты и только им известно что они обозначают.
/// Так как данные приходят редко, то их прореживания для построения графиков не предусмотрено.
///
public interface ITimestampedSetRepository
{
///
/// Количество записей по указанному набору в БД. Для пагинации.
///
///
///
///
Task Count(Guid idDiscriminator, CancellationToken token);
///
/// Получение данных с фильтрацией. Значение фильтра null - отключен
///
/// Дискриминатор (идентификатор) набора
/// Фильтр позднее даты
/// Фильтр свойств набора. Можно запросить только некоторые свойства из набора
///
///
///
///
Task> Get(Guid idDiscriminator, DateTimeOffset? geTimestamp, IEnumerable? props, int skip, int take, CancellationToken token);
///
/// Диапазон дат за которые есть данные
///
///
///
///
Task GetDatesRange(Guid idDiscriminator, CancellationToken token);
///
/// Получить последние данные
///
/// Дискриминатор (идентификатор) набора
/// Фильтр свойств набора. Можно запросить только некоторые свойства из набора
///
///
///
Task> GetLast(Guid idDiscriminator, IEnumerable? props, int take, CancellationToken token);
///
/// Добавление новых данных
///
/// Дискриминатор (идентификатор) набора
///
///
///
Task InsertRange(Guid idDiscriminator, IEnumerable sets, CancellationToken token);
}