Код: Выделить всё
public class UserService(IUserRepository repository, ILogger logger)
{
public async Task GetByIdAsync(int userId, Func? include = null,
CancellationToken cancellationToken = default)
{
try
{
var entity = await repository.GetByIdAsync(userId, include, cancellationToken);
return entity is null ? default : entity.Adapt();
}
catch (OracleException ex) when (ex.Number == 1013)
{
logger.Information("The request was cancelled.");
return default;
}
}
public async Task GetByNameAsync(string name,
CancellationToken cancellationToken = default)
{
try
{
var entities = await repository.GetByNameAlnumAsync(name, cancellationToken);
return entities.Adapt();
}
catch (OracleException ex) when (ex.Number == 1013)
{
logger.Information("The request was cancelled.");
return [];
}
}
public async Task GetByFilterAsync(Filter filter,
CancellationToken cancellationToken = default)
{
try
{
var entities = await repository.GetByFilterAsync(filter, cancellationToken);
return entities.Adapt();
}
catch (OracleException ex) when (ex.Number == 1013)
{
logger.Information("The request was cancelled.");
return [];
}
}
}
- Я использую tdto правильно?
- include аргумент в метод GetByIdasync нарушает SRP. Допустим, пользователь имеет много внешних зависимостей, и они используются по -разному везде. Для каждого использования сделайте метод, который отличается от многих подобных с помощью другого набора .include () ? Объект результата? Как насчет повторяемости? Я не должен делать метод в этой службе, который будет обрабатывать исключение , верно? Служба обработчика? Какая информация должна быть передана?
Подробнее здесь: https://stackoverflow.com/questions/794 ... n-handling