using Persistence.Models;
using Persistence.Models.Requests;
namespace Persistence.Repositories;
///
/// Интерфейс для работы с историческими данными
///
///
public interface IChangeLogRepository : ISyncWithDiscriminatorRepository
{
///
/// Добавление записей
///
/// пользователь, который добавляет
/// ключ справочника
///
///
///
Task AddRange(Guid idAuthor, Guid idDiscriminator, IEnumerable dtos, CancellationToken token);
///
/// Пометить записи как удаленные
///
///
/// ключи записей
///
///
Task MarkAsDeleted(Guid idEditor, IEnumerable ids, CancellationToken token);
///
/// Пометить записи как удаленные
///
///
/// дискриминатор таблицы
///
///
Task MarkAsDeleted(Guid idEditor, Guid idDiscriminator, CancellationToken token);
///
/// Очистить и добавить новые
///
///
///
///
///
///
Task ClearAndAddRange(Guid idAuthor, Guid idDiscriminator, IEnumerable dtos, CancellationToken token);
///
/// Редактирование записей
///
/// пользователь, который редактирует
///
///
///
Task UpdateRange(Guid idEditor, IEnumerable dtos, CancellationToken token);
///
/// Получение актуальных записей на определенный момент времени (с пагинацией)
///
///
/// текущий момент времени
/// параметры запроса фильтрации
/// параметры запроса пагинации
///
///
Task> GetByDate(Guid idDiscriminator, DateTimeOffset moment, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token);
///
/// Получение измененных записей за период времени
///
///
///
///
///
///
Task> GetChangeLogForInterval(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token);
///
/// Получение списка дат, в которые происходили изменения (день, месяц, год, без времени)
///
///
///
///
Task> GetDatesChange(Guid idDiscriminator, CancellationToken token);
}