using Persistence.Models;
namespace Persistence.Repositories;
///
/// Интерфейс для работы с историческими данными
///
///
public interface IChangeLogRepository //: ISyncRepository
{
///
/// Добавление записей
///
/// пользователь, который добавляет
/// ключ справочника
///
///
///
Task InsertRange(Guid idUser, Guid idDiscriminator, IEnumerable dtos, CancellationToken token);
///
/// Редактирование записей
///
/// пользователь, который редактирует
///
///
///
///
Task UpdateRange(Guid idUser, Guid idDiscriminator, IEnumerable dtos, CancellationToken token);
///
/// Добавляет Dto у которых id == 0, изменяет dto у которых id != 0
///
/// пользователь, который редактирует или добавляет
///
///
///
Task UpdateOrInsertRange(int idUser, IEnumerable> dtos, CancellationToken token);
///
/// Помечает записи как удаленные
///
///
///
///
Task Clear(Guid idUser, Guid idDiscriminator, CancellationToken token);
///
/// Очистить и добавить новые
///
///
///
///
///
///
Task ClearAndInsertRange(Guid idUser, Guid idDiscriminator, IEnumerable dtos, CancellationToken token);
///
/// Пометить записи как удаленные
///
///
///
///
///
Task MarkAsDeleted(Guid idUser, IEnumerable ids, CancellationToken token);
///
/// Получение дат изменений записей
///
///
///
///
Task> GetDatesChange(CancellationToken token);
///
/// Получение измененных записей за период времени
///
///
///
///
///
///
Task> GetChangeLogForDate(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token);
///
/// Получение актуальных записей на определенный момент времени
///
///
/// текущий момент времени
///
///
Task> GetByDate(Guid idDiscriminator, DateTimeOffset moment, CancellationToken token);
}