diff --git a/AyCode.Core/Enums/DataChangeMode.cs b/AyCode.Core/Enums/TrackingState.cs similarity index 55% rename from AyCode.Core/Enums/DataChangeMode.cs rename to AyCode.Core/Enums/TrackingState.cs index 7e7a459..0060f8e 100644 --- a/AyCode.Core/Enums/DataChangeMode.cs +++ b/AyCode.Core/Enums/TrackingState.cs @@ -6,10 +6,12 @@ using System.Threading.Tasks; namespace AyCode.Core.Enums { - public enum DataChangeMode + public enum TrackingState : byte { - Add = 1, - Update = 2, - Remove = 3, + None = 0, + Get = 1, + Add = 2, + Update = 3, + Remove = 4, } } diff --git a/AyCode.Core/Extensions/CollectionExtensions.cs b/AyCode.Core/Extensions/CollectionExtensions.cs index 731f955..b48fb2b 100644 --- a/AyCode.Core/Extensions/CollectionExtensions.cs +++ b/AyCode.Core/Extensions/CollectionExtensions.cs @@ -6,7 +6,7 @@ namespace AyCode.Core.Extensions { public static class CollectionExtensions { - public static DataChangeMode UpdateCollection(this IList source, TDataItem dataItem, bool isRemove) where TDataItem : IId + public static TrackingState UpdateCollection(this IList source, TDataItem dataItem, bool isRemove) where TDataItem : IId { if (dataItem.Id.IsNullOrEmpty()) throw new ArgumentNullException(nameof(dataItem), "UpdateCollection->dataItem.Id.IsNullOrEmpty()"); @@ -16,17 +16,17 @@ namespace AyCode.Core.Extensions { if (transferIndex > -1) source.RemoveAt(transferIndex); - return DataChangeMode.Remove; + return TrackingState.Remove; } if (transferIndex > -1) { source[transferIndex] = dataItem; - return DataChangeMode.Update; + return TrackingState.Update; } source.Add(dataItem); - return DataChangeMode.Add; + return TrackingState.Add; } public static int FindIndex(this IList list, Predicate predicate) diff --git a/AyCode.Services/SignalRs/SignalRCrudTags.cs b/AyCode.Services/SignalRs/SignalRCrudTags.cs index 83466f5..7633e7a 100644 --- a/AyCode.Services/SignalRs/SignalRCrudTags.cs +++ b/AyCode.Services/SignalRs/SignalRCrudTags.cs @@ -1,4 +1,6 @@ -namespace AyCode.Services.SignalRs; +using AyCode.Core.Enums; + +namespace AyCode.Services.SignalRs; public sealed class SignalRCrudTags(int getAllTag, int getItemTag, int addTag, int updateTag, int removeTag) { @@ -8,4 +10,16 @@ public sealed class SignalRCrudTags(int getAllTag, int getItemTag, int addTag, i public int UpdateMessageTag { get; } = updateTag; public int RemoveMessageTag { get; } = removeTag; + public int GetMessageTagByTrackingState(TrackingState trackingState) + { + return trackingState switch + { + TrackingState.None => 0, + TrackingState.Get => GetItemMessageTag, + TrackingState.Add => AddMessageTag, + TrackingState.Update => UpdateMessageTag, + TrackingState.Remove => RemoveMessageTag, + _ => throw new ArgumentOutOfRangeException() + }; + } } \ No newline at end of file