using System.Threading.Tasks; using Persistence.Models; namespace Persistence.Repositories { /// <summary> /// Интерфейс по работе с технологическими сообщениями /// </summary> public interface ITechMessagesRepository { /// <summary> /// Получить страницу списка объектов /// </summary> /// <param name="request"></param> /// <param name="token"></param> /// <returns></returns> Task<PaginationContainer<TechMessageDto>> GetPage(RequestDto request, CancellationToken token); /// <summary> /// Добавление новых сообщений /// </summary> /// <param name="dtos"></param> /// <param name="token"></param> /// <returns></returns> Task<int> InsertRange(IEnumerable<TechMessageDto> dtos, CancellationToken token); /// <summary> /// Получение списка уникальных названий систем АБ /// </summary> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<string>> GetSystems(CancellationToken token); /// <summary> /// Получение количества сообщений по категориям и системам автобурения /// </summary> /// <param name="categoryId">Id Категории важности</param> /// <param name="autoDrillingSystem">Система автобурения</param> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<MessagesStatisticDto>> GetStatistics(IEnumerable<string> autoDrillingSystem, IEnumerable<int> categoryIds, CancellationToken token); /// <summary> /// Получить порцию записей, начиная с заданной даты /// </summary> /// <param name="dateBegin"></param> /// <param name="take"></param> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<TechMessageDto>> GetPart(DateTimeOffset dateBegin, int take, CancellationToken token); /// <summary> /// Получить диапазон дат, для которых есть данные в репозитории /// </summary> /// <param name="token"></param> /// <returns></returns> Task<DatesRangeDto> GetDatesRangeAsync(CancellationToken token); } }