using Persistence.Models;
using Refit;
namespace Persistence.Client.Clients;
///
/// Клиент для работы с репозиторием для хранения разных наборов данных рядов.
/// idDiscriminator - идентифицирует конкретный набор данных, прим.: циклы измерения АСИБР, или отчет о DrillTest.
/// idDiscriminator формируют клиенты и только им известно что они обозначают.
/// Так как данные приходят редко, то их прореживания для построения графиков не предусмотрено.
///
public interface ITimestampedSetClient
{
private const string baseUrl = "/api/TimestampedSet/{idDiscriminator}";
///
/// Добавление новых данных
///
/// Дискриминатор (идентификатор) набора
///
///
[Post(baseUrl)]
Task> InsertRange(Guid idDiscriminator, IEnumerable sets);
///
/// Получение данных с фильтрацией. Значение фильтра null - отключен
///
/// Дискриминатор (идентификатор) набора
/// Фильтр позднее даты
/// Фильтр свойств набора. Можно запросить только некоторые свойства из набора
///
///
///
[Get(baseUrl)]
Task>> Get(Guid idDiscriminator, [Query] DateTimeOffset? geTimestamp, [Query] IEnumerable? columnNames, int skip, int take);
///
/// Получить последние данные
///
/// Дискриминатор (идентификатор) набора
/// Фильтр свойств набора. Можно запросить только некоторые свойства из набора
///
///
[Get($"{baseUrl}/last")]
Task>> GetLast(Guid idDiscriminator, [Query] IEnumerable? columnNames, int take);
///
/// Количество записей по указанному набору в БД. Для пагинации.
///
/// Дискриминатор (идентификатор) набора
///
[Get($"{baseUrl}/count")]
Task> Count(Guid idDiscriminator);
///
/// Диапазон дат за которые есть данные
///
/// Дискриминатор (идентификатор) набора
///
[Get($"{baseUrl}/datesRange")]
Task> GetDatesRange(Guid idDiscriminator);
}