using DD.Persistence.Models; using DD.Persistence.Models.Common; using DD.Persistence.Models.Requests; using Refit; namespace DD.Persistence.Client.Clients.Interfaces.Refit; /// /// Refit интерфейс для IRefitChangeLogClient /// public interface IRefitChangeLogClient : IRefitClient, IDisposable { private const string BaseRoute = "/api/ChangeLog"; /// /// Импорт с заменой: удаление старых строк и добавление новых /// [Post($"{BaseRoute}/replace/{{idDiscriminator}}")] Task> ClearAndAddRange(Guid idDiscriminator, IEnumerable dtos, CancellationToken token); /// /// Получение актуальных данных на определенную дату (с пагинацией) /// [Get($"{BaseRoute}/moment/{{idDiscriminator}}")] Task>> GetByDate( Guid idDiscriminator, DateTimeOffset moment, [Query] PaginationRequest paginationRequest, CancellationToken token); /// /// Получение исторических данных за определенный период времени /// [Get($"{BaseRoute}/history/{{idDiscriminator}}")] Task>> GetChangeLogForInterval(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token); /// /// Добавить одну запись /// [Post($"{BaseRoute}/{{idDiscriminator}}")] Task> Add(Guid idDiscriminator, ChangeLogValuesDto dto, CancellationToken token); /// /// Добавить несколько записей /// [Post($"{BaseRoute}/range/{{idDiscriminator}}")] Task> AddRange(Guid idDiscriminator, IEnumerable dtos, CancellationToken token); /// /// Обновить одну запись /// [Put($"{BaseRoute}")] Task> Update(ChangeLogValuesDto dto, CancellationToken token); /// /// Обновить несколько записей /// [Put($"{BaseRoute}/range")] Task> UpdateRange(IEnumerable dtos, CancellationToken token); /// /// Удалить одну запись /// [Delete($"{BaseRoute}")] Task> Delete(Guid id, CancellationToken token); /// /// Удалить несколько записей /// [Delete($"{BaseRoute}/range")] Task> DeleteRange([Body] IEnumerable ids, CancellationToken token); /// /// Получение списка дат, в которые происходили изменения (день, месяц, год, без времени) /// [Get($"{BaseRoute}/datesRange/{{idDiscriminator}}")] Task> GetDatesRange(Guid idDiscriminator, CancellationToken token); }