From bb5525778dcda668d8a9624fbbd442f72a9d0009 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Thu, 22 Jan 2026 01:49:13 +0100 Subject: [PATCH] Improve error handling in InsertObjectProcedureHandler Wrap SQL execution in try-catch and inject SqlExceptionOptions. Throw BadRequestException with a clear message when insert fails due to missing referenced entities, based on SqlException number. Other SQL exceptions are rethrown. This provides better feedback for foreign key/reference errors. --- .../InsertProcedure/InsertObjectProcedure.cs | 41 +++++++++++++------ 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/src/ReC.Application/Common/Procedures/InsertProcedure/InsertObjectProcedure.cs b/src/ReC.Application/Common/Procedures/InsertProcedure/InsertObjectProcedure.cs index a2b0f46..3e59de7 100644 --- a/src/ReC.Application/Common/Procedures/InsertProcedure/InsertObjectProcedure.cs +++ b/src/ReC.Application/Common/Procedures/InsertProcedure/InsertObjectProcedure.cs @@ -1,4 +1,5 @@ using DigitalData.Core.Abstraction.Application.Repository; +using DigitalData.Core.Exceptions; using MediatR; using Microsoft.Data.SqlClient; using ReC.Application.Common.Exceptions; @@ -7,6 +8,7 @@ using ReC.Application.EndpointParams.Commands; using ReC.Application.Endpoints.Commands; using ReC.Application.Results.Commands; using ReC.Application.Profile.Commands; +using ReC.Application.Common.Options; namespace ReC.Application.Common.Procedures.InsertProcedure; @@ -41,7 +43,7 @@ public static class InsertObjectProcedureExtensions } } -public class InsertObjectProcedureHandler(IRepository repo) : IRequestHandler +public class InsertObjectProcedureHandler(IRepository repo, SqlExceptionOptions sqlExceptionOptions) : IRequestHandler { public async Task Handle(InsertObjectProcedure request, CancellationToken cancel) { @@ -110,18 +112,31 @@ public class InsertObjectProcedureHandler(IRepository repo) : IRequestHandler