using DD.Persistence.Models.ChangeLog;
using DD.Persistence.Models.Common;
using DD.Persistence.Models.Requests;
namespace DD.Persistence.Repositories;
///
/// Интерфейс для работы с историческими данными
///
public interface IChangeLogRepository
{
///
/// Добавление записей
///
/// коммит с изменениями
///
///
///
Task AddRange(ChangeLogCommitDto dto, IEnumerable> dtos, CancellationToken token);
///
/// Пометить записи как удаленные
///
/// ключи записей
///
///
///
Task MarkAsDeleted(IEnumerable ids, ChangeLogCommitDto commit, CancellationToken token);
///
/// Пометить записи как удаленные
///
///
///
///
Task MarkAsDeletedByDiscriminator(ChangeLogCommitDto commit, CancellationToken token);
///
/// Очистить и добавить новые
///
/// коммит с изменениями
///
///
///
Task ClearAndAddRange(ChangeLogCommitDto dto, IEnumerable> dtos, CancellationToken token);
///
/// Редактирование записей
///
/// коммит с изменениями
///
///
///
Task UpdateRange(ChangeLogCommitDto commitDto, IEnumerable dtos, CancellationToken token);
///
/// Получение актуальных записей на определенный момент времени (с пагинацией)
///
///
/// текущий момент времени
/// параметры запроса пагинации
///
///
Task> GetByDate(Guid idDiscriminator, DateTimeOffset moment, PaginationRequest paginationRequest, CancellationToken token);
///
/// Получение журнала изменений по пользователю и дискриминатору задачи
///
///
///
///
Task> GetByUserIdAndDiscriminatorId(ChangeLogQuery request, CancellationToken token);
///
/// получить изменения для синхронизации
///
///
///
///
///
Task> GetGtDate(Guid idDiscriminator, DateTimeOffset dateBegin, CancellationToken token);
}