From 6126fce24ddc409028dcd318e565de0f6842fe62 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Sun, 11 May 2025 15:19:37 +0200 Subject: [PATCH] Refactor MemoryCacheExtensions and HistoryController Updated MemoryCacheExtensions to accept more flexible parameters in GetEnumAsDictionary and improved the merging logic for ignored values. Simplified HistoryController by removing the logger dependency and adjusted GetReferenceTypes to include a key parameter for cache retrieval. --- .../MemoryCacheExtensions.cs | 13 +++++++++++-- .../Controllers/HistoryController.cs | 9 +++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/EnvelopeGenerator.Extensions/MemoryCacheExtensions.cs b/EnvelopeGenerator.Extensions/MemoryCacheExtensions.cs index acecfe86..f9b0a1ac 100644 --- a/EnvelopeGenerator.Extensions/MemoryCacheExtensions.cs +++ b/EnvelopeGenerator.Extensions/MemoryCacheExtensions.cs @@ -6,11 +6,20 @@ public static class MemoryCacheExtensions { private static readonly Guid BaseId = Guid.NewGuid(); - public static IDictionary GetEnumAsDictionary(this IMemoryCache memoryCache, string key = "", params IEnumerable[] ignores) + public static IDictionary GetEnumAsDictionary(this IMemoryCache memoryCache, string key = "", params object[] ignores) where TEnum : Enum => memoryCache.GetOrCreate(BaseId + typeof(TEnum).FullName + key, _ => { - List mergedIgnores = ignores.SelectMany(x => x).ToList(); + var mergedIgnores = new List(); + + foreach (var ignore in ignores) + { + if (ignore is IEnumerable ignoreList) + mergedIgnores.AddRange(ignoreList); + else if (ignore is TEnum ignoreVal) + mergedIgnores.Add(ignoreVal); + } + return Enum.GetValues(typeof(TEnum)) .Cast() .Where(e => !mergedIgnores.Contains(e)) diff --git a/EnvelopeGenerator.GeneratorAPI/Controllers/HistoryController.cs b/EnvelopeGenerator.GeneratorAPI/Controllers/HistoryController.cs index d4d4ec2c..a7292e08 100644 --- a/EnvelopeGenerator.GeneratorAPI/Controllers/HistoryController.cs +++ b/EnvelopeGenerator.GeneratorAPI/Controllers/HistoryController.cs @@ -18,8 +18,6 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers; [Authorize] public class HistoryController : ControllerBase { - private readonly ILogger _logger; - private readonly IEnvelopeHistoryService _service; private readonly IMemoryCache _memoryCache; @@ -27,11 +25,10 @@ public class HistoryController : ControllerBase /// /// Konstruktor für den HistoryController. /// - /// Der Logger, der für das Protokollieren von Informationen verwendet wird. /// Der Dienst, der für die Verarbeitung der Umschlaghistorie verantwortlich ist. - public HistoryController(ILogger logger, IEnvelopeHistoryService service, IMemoryCache memoryCache) + /// + public HistoryController(IEnvelopeHistoryService service, IMemoryCache memoryCache) { - _logger = logger; _service = service; _memoryCache = memoryCache; } @@ -54,7 +51,7 @@ public class HistoryController : ControllerBase [Authorize] public IActionResult GetReferenceTypes(ReferenceType? referenceType = null) { - return referenceType is null ? Ok(_memoryCache.GetEnumAsDictionary()) : Ok(referenceType.ToString()); + return referenceType is null ? Ok(_memoryCache.GetEnumAsDictionary("gen.api", ReferenceType.Unknown)) : Ok(referenceType.ToString()); } ///