feat(api, domain, core): Глобальные модели ошибок. ConfigureValidator - валидатор контроллеров. GlobalExceptionHandler - глобальный обработчик ошибок в API.
This commit is contained in:
@@ -8,6 +8,7 @@ using PARR.Domain.Common.Rabbit.Messages;
|
||||
using PARR.Domain.DTOs.TaskDTO;
|
||||
using PARR.Domain.Entities.Base.History;
|
||||
using PARR.Domain.Enums;
|
||||
using PARR.Domain.Exceptions;
|
||||
using PARR.Domain.Settings;
|
||||
using System.Text.Encodings.Web;
|
||||
using System.Text.Json;
|
||||
@@ -50,15 +51,19 @@ namespace PARR.Core.Services.TaskServices.Implementations
|
||||
throw new InvalidOperationException($"Тип задачи typeCode не найден в БД");
|
||||
}
|
||||
|
||||
// Проверка IsSingleton: если задача уже активна — возвращаем её
|
||||
// Проверка IsSingleton: если задача уже есть и она активна, генерим ошибку, что нельзя создать новую
|
||||
if (taskType.IsSingleton)
|
||||
{
|
||||
var existingTask = await GetActiveSingletonTaskAsync(typeCode);
|
||||
|
||||
if (existingTask != null)
|
||||
{
|
||||
logger.LogInformation("Задача типа {TypeCode} уже активна (id: {ExistingId}). Возвращаем существующую.", typeCode, existingTask.Id);
|
||||
return existingTask.Id;
|
||||
//logger.LogInformation("Задача типа {TypeCode} уже активна (id: {ExistingId}). Возвращаем существующую.", typeCode, existingTask.Id);
|
||||
//return existingTask.Id;
|
||||
|
||||
logger.LogInformation("Задача типа {TypeCode} уже активна (id: {ExistingId}).", typeCode, existingTask.Id);
|
||||
|
||||
throw new AlreadyExistsException($"Уже существует активная задача (id: {existingTask.Id}). Нельзя создать новую пока не выполнится существующая.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +83,7 @@ namespace PARR.Core.Services.TaskServices.Implementations
|
||||
if (!await taskRepository.CreateAsync(task) || !await taskRepository.CommitAsync(initiator))
|
||||
{
|
||||
logger.LogError("Ошибка при сохранении задачи в БД");
|
||||
throw new DbUpdateException("Ошибка при сохранении задачи в БД");
|
||||
throw new DbErrorException("Ошибка при сохранении задачи в БД");
|
||||
}
|
||||
|
||||
logger.LogInformation("Задача {TaskId} типа {TypeCode} сохранена в БД со статусом Pending", task.Id, typeCode);
|
||||
|
||||
Reference in New Issue
Block a user