using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using AsbCloudApp.Data; using AsbCloudApp.Requests; namespace AsbCloudApp.Repositories; /// <summary> /// Репозиторий для записей с историей /// </summary> public interface IChangeLogRepository<TDto, TRequest> where TDto : ChangeLogAbstract where TRequest : ChangeLogBaseRequest { /// <summary> /// Добавление записей /// </summary> /// <param name="idUser"></param> /// <param name="dtos"></param> /// <param name="token"></param> /// <returns></returns> Task<int> InsertRange(int idUser, IEnumerable<TDto> dtos, CancellationToken token); /// <summary> /// Редактирование записей /// </summary> /// <param name="idUser"></param> /// <param name="dtos"></param> /// <param name="token"></param> /// <returns></returns> Task<int> UpdateRange(int idUser, IEnumerable<TDto> dtos, CancellationToken token); /// <summary> /// Добавляет Dto у которых id == 0, изменяет dto у которых id != 0 /// </summary> /// <param name="idUser"></param> /// <param name="dtos"></param> /// <param name="token"></param> /// <returns></returns> Task<int> UpdateOrInsertRange(int idUser, IEnumerable<TDto> dtos, CancellationToken token); /// <summary> /// Добавление записей с удалением старых (для импорта) /// </summary> /// <param name="idUser"></param> /// <param name="request"></param> /// <param name="token"></param> /// <returns></returns> Task<int> Clear(int idUser, TRequest request, CancellationToken token); /// <summary> /// Очистить и добавить новые /// </summary> /// <param name="idUser"></param> /// <param name="request"></param> /// <param name="dtos"></param> /// <param name="token"></param> /// <returns></returns> Task<int> ClearAndInsertRange(int idUser, TRequest request, IEnumerable<TDto> dtos, CancellationToken token); /// <summary> /// Удаление записей /// </summary> /// <param name="idUser"></param> /// <param name="ids"></param> /// <param name="token"></param> /// <returns></returns> Task<int> DeleteRange(int idUser, IEnumerable<int> ids, CancellationToken token); /// <summary> /// Получение дат изменений записей /// </summary> /// <param name="request"></param> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<DateOnly>> GetDatesChange(TRequest request, CancellationToken token); /// <summary> /// Получение журнала изменений /// </summary> /// <param name="request"></param> /// <param name="date">Фильтр по дате. Если null - вернет все</param> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<TDto>> GetChangeLog(TRequest request, DateOnly? date, CancellationToken token); /// <summary> /// Получение записей по параметрам /// </summary> /// <param name="request"></param> /// <param name="token"></param> /// <returns></returns> Task<IEnumerable<TDto>> Get(TRequest request, CancellationToken token); }