using DD.Persistence.Models;
using DD.Persistence.Models.Common;
namespace DD.Persistence.Services.Interfaces;
///
/// Сервис для работы с временными данными
///
public interface ITimestampedValuesService
{
///
/// Добавление записей
///
///
///
///
///
Task AddRange(Guid discriminatorId, IEnumerable dtos, CancellationToken token);
///
/// Получение данных с фильтрацией для нескольких систем. Значение фильтра null - отключен
///
/// Набор дискриминаторов (идентификаторов)
///
///
///
///
///
///
Task> Get(IEnumerable discriminatorIds, DateTimeOffset? geTimestamp,
IEnumerable? columnNames, int skip, int take, CancellationToken token);
///
/// Получение данных с начала
///
/// Дискриминатор (идентификатор) набора
/// Количество
///
///
Task> GetFirst(Guid discriminatorId, int takeCount, CancellationToken token);
///
/// Получить данные, начиная с определенной даты
///
///
/// дата начала
///
///
Task> GetGtDate(Guid discriminatorId, DateTimeOffset timestampBegin, CancellationToken token);
///
/// Получение данных с конца
///
/// Дискриминатор (идентификатор) набора
/// Количество
///
///
Task> GetLast(Guid discriminatorId, int takeCount, CancellationToken token);
///
/// Получить список объектов с прореживанием
///
///
/// дата начала
///
///
///
///
Task> GetResampledData(Guid discriminatorId, DateTimeOffset timestampBegin, double intervalSec = 600, int approxPointsCount = 1024, CancellationToken token = default);
}