Renamed RecStatus.QueryFailed to RecStatus.Failed and updated all usages and documentation to reflect its broader purpose as a general failure code for any operation, not just SQL queries. Improved consistency in error handling and status reporting across the codebase.
46 lines
1.6 KiB
C#
46 lines
1.6 KiB
C#
using MediatR;
|
|
using ReC.Application.Common.Exceptions;
|
|
using ReC.Application.Common.Interfaces;
|
|
using ReC.Application.RecActions.Commands;
|
|
using ReC.Application.Results.Commands;
|
|
using ReC.Domain.Constants;
|
|
using System.Text.Json;
|
|
|
|
namespace ReC.Application.Common.Behaviors.InvokeAction;
|
|
|
|
public class PreprocessingBehavior(IRecDbContext context, ISender sender) : IPipelineBehavior<InvokeRecActionViewCommand, Unit>
|
|
{
|
|
public async Task<Unit> Handle(InvokeRecActionViewCommand request, RequestHandlerDelegate<Unit> next, CancellationToken cancel)
|
|
{
|
|
try
|
|
{
|
|
if (request.Action.PreprocessingQuery is string query)
|
|
{
|
|
var result = await context.ExecuteDynamicSqlAsync(query, cancel);
|
|
|
|
await sender.Send(new InsertResultCommand()
|
|
{
|
|
Status = RecStatus.QuerySuccess,
|
|
ActionId = request.Action.Id,
|
|
Info = JsonSerializer.Serialize(result),
|
|
Type = ResultType.Pre
|
|
}, cancel);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
await sender.Send(new InsertResultCommand()
|
|
{
|
|
Status = RecStatus.Failed,
|
|
ActionId = request.Action.Id,
|
|
Error = ex.ToString(),
|
|
Type = ResultType.Pre
|
|
}, cancel);
|
|
|
|
if (request.Action.ErrorAction == ErrorAction.Stop)
|
|
throw new RecActionException(request.Action.Id, request.Action.ProfileId, ex);
|
|
}
|
|
|
|
return await next(cancel);
|
|
}
|
|
} |