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