Refactor SQL construction with StringBuilder for clarity

Refactored DeleteObjectProcedureHandler, InsertObjectProcedureHandler, and UpdateObjectProcedureHandler to use StringBuilder for building SQL command strings. This improves readability and maintainability without changing the logic or parameters. Added System.Text using directives as needed.
This commit is contained in:
2026-03-27 14:54:27 +01:00
parent b2544b64e3
commit 210ed9be8d
3 changed files with 128 additions and 32 deletions

View File

@@ -6,6 +6,7 @@ using Microsoft.Extensions.Options;
using ReC.Application.Common.Exceptions;
using ReC.Application.Common.Options;
using ReC.Application.Common.Procedures.UpdateProcedure.Dto;
using System.Text;
namespace ReC.Application.Common.Procedures.UpdateProcedure;
@@ -100,19 +101,64 @@ public class UpdateObjectProcedureHandler(IRepository repo, IOptionsMonitor<SqlE
try
{
var result = await repo.ExecuteQueryRawAsync(
"DECLARE @RC SMALLINT = 0; " +
"EXEC @RC = [dbo].[PRREC_UPDATE_OBJECT] " +
"@pENTITY = @pENTITY, @pGUID = @pGUID, @pCHANGED_WHO = @pCHANGED_WHO, @pCHANGED_WHEN = @pCHANGED_WHEN, " +
"@pACTION_PROFILE_ID = @pACTION_PROFILE_ID, @pACTION_ACTIVE = @pACTION_ACTIVE, @pACTION_SEQUENCE = @pACTION_SEQUENCE, @pACTION_ENDPOINT_ID = @pACTION_ENDPOINT_ID, @pACTION_ENDPOINT_AUTH_ID = @pACTION_ENDPOINT_AUTH_ID, @pACTION_ENDPOINT_PARAMS_ID = @pACTION_ENDPOINT_PARAMS_ID, @pACTION_SQL_CONNECTION_ID = @pACTION_SQL_CONNECTION_ID, @pACTION_TYPE_ID = @pACTION_TYPE_ID, @pACTION_PRE_SQL = @pACTION_PRE_SQL, @pACTION_HEADER_SQL = @pACTION_HEADER_SQL, @pACTION_BODY_SQL = @pACTION_BODY_SQL, @pACTION_POST_SQL = @pACTION_POST_SQL, @pACTION_ERROR_ACTION_ID = @pACTION_ERROR_ACTION_ID, " +
"@pENDPOINT_ACTIVE = @pENDPOINT_ACTIVE, @pENDPOINT_DESCRIPTION = @pENDPOINT_DESCRIPTION, @pENDPOINT_URI = @pENDPOINT_URI, " +
"@pENDPOINT_AUTH_ACTIVE = @pENDPOINT_AUTH_ACTIVE, @pENDPOINT_AUTH_DESCRIPTION = @pENDPOINT_AUTH_DESCRIPTION, @pENDPOINT_AUTH_TYPE_ID = @pENDPOINT_AUTH_TYPE_ID, @pENDPOINT_AUTH_API_KEY = @pENDPOINT_AUTH_API_KEY, @pENDPOINT_AUTH_API_VALUE = @pENDPOINT_AUTH_API_VALUE, @pENDPOINT_AUTH_API_KEY_ADD_TO_ID = @pENDPOINT_AUTH_API_KEY_ADD_TO_ID, @pENDPOINT_AUTH_TOKEN = @pENDPOINT_AUTH_TOKEN, @pENDPOINT_AUTH_USERNAME = @pENDPOINT_AUTH_USERNAME, @pENDPOINT_AUTH_PASSWORD = @pENDPOINT_AUTH_PASSWORD, @pENDPOINT_AUTH_DOMAIN = @pENDPOINT_AUTH_DOMAIN, @pENDPOINT_AUTH_WORKSTATION = @pENDPOINT_AUTH_WORKSTATION, " +
"@pENDPOINT_PARAMS_ACTIVE = @pENDPOINT_PARAMS_ACTIVE, @pENDPOINT_PARAMS_DESCRIPTION = @pENDPOINT_PARAMS_DESCRIPTION, @pENDPOINT_PARAMS_GROUP_ID = @pENDPOINT_PARAMS_GROUP_ID, @pENDPOINT_PARAMS_SEQUENCE = @pENDPOINT_PARAMS_SEQUENCE, @pENDPOINT_PARAMS_KEY = @pENDPOINT_PARAMS_KEY, @pENDPOINT_PARAMS_VALUE = @pENDPOINT_PARAMS_VALUE, " +
"@pPROFILE_ACTIVE = @pPROFILE_ACTIVE, @pPROFILE_TYPE_ID = @pPROFILE_TYPE_ID, @pPROFILE_MANDANTOR = @pPROFILE_MANDANTOR, @pPROFILE_NAME = @pPROFILE_NAME, @pPROFILE_DESCRIPTION = @pPROFILE_DESCRIPTION, @pPROFILE_LOG_LEVEL_ID = @pPROFILE_LOG_LEVEL_ID, @pPROFILE_LANGUAGE_ID = @pPROFILE_LANGUAGE_ID, @pPROFILE_FIRST_RUN = @pPROFILE_FIRST_RUN, @pPROFILE_LAST_RUN = @pPROFILE_LAST_RUN, @pPROFILE_LAST_RESULT = @pPROFILE_LAST_RESULT, " +
"@pRESULT_ACTION_ID = @pRESULT_ACTION_ID, @pRESULT_STATUS_ID = @pRESULT_STATUS_ID, @pRESULT_HEADER = @pRESULT_HEADER, @pRESULT_BODY = @pRESULT_BODY; " +
"SELECT @RC;",
parameters,
cancel);
var sql = new StringBuilder()
.AppendLine("DECLARE @RC SMALLINT = 0;")
.AppendLine("EXEC @RC = [dbo].[PRREC_UPDATE_OBJECT]")
.AppendLine(" @pENTITY = @pENTITY,")
.AppendLine(" @pGUID = @pGUID,")
.AppendLine(" @pCHANGED_WHO = @pCHANGED_WHO,")
.AppendLine(" @pCHANGED_WHEN = @pCHANGED_WHEN,")
.AppendLine(" @pACTION_PROFILE_ID = @pACTION_PROFILE_ID,")
.AppendLine(" @pACTION_ACTIVE = @pACTION_ACTIVE,")
.AppendLine(" @pACTION_SEQUENCE = @pACTION_SEQUENCE,")
.AppendLine(" @pACTION_ENDPOINT_ID = @pACTION_ENDPOINT_ID,")
.AppendLine(" @pACTION_ENDPOINT_AUTH_ID = @pACTION_ENDPOINT_AUTH_ID,")
.AppendLine(" @pACTION_ENDPOINT_PARAMS_ID = @pACTION_ENDPOINT_PARAMS_ID,")
.AppendLine(" @pACTION_SQL_CONNECTION_ID = @pACTION_SQL_CONNECTION_ID,")
.AppendLine(" @pACTION_TYPE_ID = @pACTION_TYPE_ID,")
.AppendLine(" @pACTION_PRE_SQL = @pACTION_PRE_SQL,")
.AppendLine(" @pACTION_HEADER_SQL = @pACTION_HEADER_SQL,")
.AppendLine(" @pACTION_BODY_SQL = @pACTION_BODY_SQL,")
.AppendLine(" @pACTION_POST_SQL = @pACTION_POST_SQL,")
.AppendLine(" @pACTION_ERROR_ACTION_ID = @pACTION_ERROR_ACTION_ID,")
.AppendLine(" @pENDPOINT_ACTIVE = @pENDPOINT_ACTIVE,")
.AppendLine(" @pENDPOINT_DESCRIPTION = @pENDPOINT_DESCRIPTION,")
.AppendLine(" @pENDPOINT_URI = @pENDPOINT_URI,")
.AppendLine(" @pENDPOINT_AUTH_ACTIVE = @pENDPOINT_AUTH_ACTIVE,")
.AppendLine(" @pENDPOINT_AUTH_DESCRIPTION = @pENDPOINT_AUTH_DESCRIPTION,")
.AppendLine(" @pENDPOINT_AUTH_TYPE_ID = @pENDPOINT_AUTH_TYPE_ID,")
.AppendLine(" @pENDPOINT_AUTH_API_KEY = @pENDPOINT_AUTH_API_KEY,")
.AppendLine(" @pENDPOINT_AUTH_API_VALUE = @pENDPOINT_AUTH_API_VALUE,")
.AppendLine(" @pENDPOINT_AUTH_API_KEY_ADD_TO_ID = @pENDPOINT_AUTH_API_KEY_ADD_TO_ID,")
.AppendLine(" @pENDPOINT_AUTH_TOKEN = @pENDPOINT_AUTH_TOKEN,")
.AppendLine(" @pENDPOINT_AUTH_USERNAME = @pENDPOINT_AUTH_USERNAME,")
.AppendLine(" @pENDPOINT_AUTH_PASSWORD = @pENDPOINT_AUTH_PASSWORD,")
.AppendLine(" @pENDPOINT_AUTH_DOMAIN = @pENDPOINT_AUTH_DOMAIN,")
.AppendLine(" @pENDPOINT_AUTH_WORKSTATION = @pENDPOINT_AUTH_WORKSTATION,")
.AppendLine(" @pENDPOINT_PARAMS_ACTIVE = @pENDPOINT_PARAMS_ACTIVE,")
.AppendLine(" @pENDPOINT_PARAMS_DESCRIPTION = @pENDPOINT_PARAMS_DESCRIPTION,")
.AppendLine(" @pENDPOINT_PARAMS_GROUP_ID = @pENDPOINT_PARAMS_GROUP_ID,")
.AppendLine(" @pENDPOINT_PARAMS_SEQUENCE = @pENDPOINT_PARAMS_SEQUENCE,")
.AppendLine(" @pENDPOINT_PARAMS_KEY = @pENDPOINT_PARAMS_KEY,")
.AppendLine(" @pENDPOINT_PARAMS_VALUE = @pENDPOINT_PARAMS_VALUE,")
.AppendLine(" @pPROFILE_ACTIVE = @pPROFILE_ACTIVE,")
.AppendLine(" @pPROFILE_TYPE_ID = @pPROFILE_TYPE_ID,")
.AppendLine(" @pPROFILE_MANDANTOR = @pPROFILE_MANDANTOR,")
.AppendLine(" @pPROFILE_NAME = @pPROFILE_NAME,")
.AppendLine(" @pPROFILE_DESCRIPTION = @pPROFILE_DESCRIPTION,")
.AppendLine(" @pPROFILE_LOG_LEVEL_ID = @pPROFILE_LOG_LEVEL_ID,")
.AppendLine(" @pPROFILE_LANGUAGE_ID = @pPROFILE_LANGUAGE_ID,")
.AppendLine(" @pPROFILE_FIRST_RUN = @pPROFILE_FIRST_RUN,")
.AppendLine(" @pPROFILE_LAST_RUN = @pPROFILE_LAST_RUN,")
.AppendLine(" @pPROFILE_LAST_RESULT = @pPROFILE_LAST_RESULT,")
.AppendLine(" @pRESULT_ACTION_ID = @pRESULT_ACTION_ID,")
.AppendLine(" @pRESULT_STATUS_ID = @pRESULT_STATUS_ID,")
.AppendLine(" @pRESULT_HEADER = @pRESULT_HEADER,")
.AppendLine(" @pRESULT_BODY = @pRESULT_BODY;")
.AppendLine("SELECT @RC;")
.ToString();
var result = await repo.ExecuteQueryRawAsync(sql, parameters, cancel);
// The stored procedure returns 0 on success, error codes > 0 on failure
if (result > 0)