From d9e4052e39b0dd0e6bbf1ccc362929adf15accf3 Mon Sep 17 00:00:00 2001 From: Daniel Harvey Date: Mon, 25 May 2026 09:11:15 -0400 Subject: [PATCH] =?UTF-8?q?fix:=20review=20remediation=20=E2=80=94=20=5Fbu?= =?UTF-8?q?sy=20finally=20block,=20TrackNotFoundMessage=20const,=20null-sa?= =?UTF-8?q?fe=20error=20log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DeepDrftContent/Controllers/TrackController.cs | 2 +- DeepDrftContent/Services/UnifiedTrackService.cs | 5 +++-- DeepDrftManager/Components/Pages/Tracks/TrackEdit.razor | 4 +++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/DeepDrftContent/Controllers/TrackController.cs b/DeepDrftContent/Controllers/TrackController.cs index 29d306a..fd84d2d 100644 --- a/DeepDrftContent/Controllers/TrackController.cs +++ b/DeepDrftContent/Controllers/TrackController.cs @@ -251,7 +251,7 @@ public class TrackController : ControllerBase } var error = result.Messages.FirstOrDefault()?.Message ?? "Unknown error"; - if (string.Equals(error, "Track not found.", StringComparison.Ordinal)) + if (string.Equals(error, UnifiedTrackService.TrackNotFoundMessage, StringComparison.Ordinal)) { return NotFound(); } diff --git a/DeepDrftContent/Services/UnifiedTrackService.cs b/DeepDrftContent/Services/UnifiedTrackService.cs index 70cdf7d..9446618 100644 --- a/DeepDrftContent/Services/UnifiedTrackService.cs +++ b/DeepDrftContent/Services/UnifiedTrackService.cs @@ -14,6 +14,7 @@ namespace DeepDrftContent.Services; /// public class UnifiedTrackService { + internal const string TrackNotFoundMessage = "Track not found."; private readonly ContentTrackService _contentTrackService; private readonly ITrackService _sqlTrackService; private readonly FileDb _fileDatabase; @@ -89,7 +90,7 @@ public class UnifiedTrackService if (lookup.Value is null) { - return Result.CreateFailResult("Track not found."); + return Result.CreateFailResult(TrackNotFoundMessage); } var entryKey = lookup.Value.EntryKey; @@ -97,7 +98,7 @@ public class UnifiedTrackService var sqlDelete = await _sqlTrackService.Delete(id); if (!sqlDelete.Success) { - var error = sqlDelete.Messages.FirstOrDefault()?.Message; + var error = sqlDelete.Messages.FirstOrDefault()?.Message ?? "unknown error"; _logger.LogError("DeleteAsync: SQL delete failed for track {TrackId}: {Error}", id, error); return Result.CreateFailResult("Failed to delete track."); } diff --git a/DeepDrftManager/Components/Pages/Tracks/TrackEdit.razor b/DeepDrftManager/Components/Pages/Tracks/TrackEdit.razor index 322262f..ef4f23e 100644 --- a/DeepDrftManager/Components/Pages/Tracks/TrackEdit.razor +++ b/DeepDrftManager/Components/Pages/Tracks/TrackEdit.razor @@ -178,13 +178,15 @@ { var error = result.Messages.FirstOrDefault()?.Message ?? "Unknown error"; Snackbar.Add($"Delete failed: {error}", Severity.Error); - _busy = false; } } catch (Exception ex) { Logger.LogError(ex, "Delete failed for track {TrackId}", Id); Snackbar.Add("Delete failed — please try again.", Severity.Error); + } + finally + { _busy = false; } }