using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace AsbCloudApp.Services; /// <summary> /// Сервис получения, добавления, изменения, удаления данных /// </summary> /// <typeparam name="TDto"></typeparam> public interface ICrudRepository<TDto> where TDto : Data.IId { /// <summary> /// Код возврата ошибки: Id не найден в БД. /// </summary> public const int ErrorIdNotFound = -1; /// <summary> /// Получение всех записей /// </summary> /// <param name="token"></param> /// <returns>emptyList if nothing found</returns> Task<IEnumerable<TDto>> GetAllAsync(CancellationToken token); /// <summary> /// Получить запись по id /// </summary> /// <param name="id"></param> /// <param name="token"></param> /// <returns>null if not found</returns> Task<TDto?> GetOrDefaultAsync(int id, CancellationToken token); /// <summary> /// Получить запись по id /// </summary> /// <param name="id"></param> /// <returns>null if not found</returns> TDto? GetOrDefault(int id); /// <summary> /// Добавление новой записи /// </summary> /// <param name="newItem"></param> /// <param name="token"></param> /// <returns>Id новой записи</returns> Task<int> InsertAsync(TDto newItem, CancellationToken token); /// <summary> /// Добавление нескольких записей /// </summary> /// <param name="newItems"></param> /// <param name="token"></param> /// <returns>количество добавленных</returns> Task<int> InsertRangeAsync(IEnumerable<TDto> newItems, CancellationToken token); /// <summary> /// Отредактировать запись /// </summary> /// <param name="item"></param> /// <param name="token"></param> /// <returns>если больше 0 - Id записи, если меньше 0 - код ошибки</returns> Task<int> UpdateAsync(TDto item, CancellationToken token); /// <summary> /// Удалить запись /// </summary> /// <param name="id"></param> /// <param name="token"></param> /// <returns>количество добавленных, если меньше 0 - код ошибки</returns> Task<int> DeleteAsync(int id, CancellationToken token); }