using Microsoft.AspNetCore.Mvc;
using DD.Persistence.Models;
using DD.Persistence.Models.Requests;
namespace DD.Persistence.API;
///
/// Интерфейс для работы с API журнала изменений
///
public interface IChangeLogApi : ISyncWithDiscriminatorApi
{
///
/// Импорт с заменой: удаление старых строк и добавление новых
///
///
///
///
///
Task ClearAndAddRange(Guid idDiscriminator, IEnumerable dtos, CancellationToken token);
///
/// Получение данных на текущую дату (с пагинацией)
///
///
/// параметры запроса фильтрации
/// параметры запроса пагинации
///
///
Task GetCurrent(Guid idDiscriminator, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token);
///
/// Получение данных на определенную дату (с пагинацией)
///
///
///
/// параметры запроса фильтрации
/// параметры запроса пагинации
///
///
Task GetByDate(Guid idDiscriminator, DateTimeOffset moment, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token);
///
/// Получение исторических данных за определенный период времени
///
///
///
///
///
///
Task GetChangeLogForDate(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token);
///
/// Добавить одну запись
///
///
///
///
///
Task Add(Guid idDiscriminator, DataWithWellDepthAndSectionDto dto, CancellationToken token);
///
/// Добавить несколько записей
///
///
///
///
///
Task AddRange(Guid idDiscriminator, IEnumerable dtos, CancellationToken token);
///
/// Обновить одну запись
///
///
///
///
Task Update(DataWithWellDepthAndSectionDto dto, CancellationToken token);
///
/// Обновить несколько записей
///
///
///
///
Task UpdateRange(IEnumerable dtos, CancellationToken token);
///
/// Удалить одну запись
///
///
///
///
Task Delete(Guid id, CancellationToken token);
///
/// Удалить несколько записей
///
///
///
///
Task DeleteRange(IEnumerable ids, CancellationToken token);
///
/// Получение списка дат, в которые происходили изменения (день, месяц, год, без времени)
///
///
///
///
Task GetDatesChange(Guid idDiscriminator, CancellationToken token);
}