Add project files.
This commit is contained in:
		
							
								
								
									
										63
									
								
								Core.Blueprint.Redis/Helpers/RedisCacheKeyHelper.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								Core.Blueprint.Redis/Helpers/RedisCacheKeyHelper.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Text.RegularExpressions; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace Core.Blueprint.Redis.Helpers | ||||
| { | ||||
|     /// <summary> | ||||
|     /// Helper class for generating consistent and normalized cache keys. | ||||
|     /// </summary> | ||||
|     public static class CacheKeyHelper | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Generates a cache key based on the instance, method name, and parameters. | ||||
|         /// </summary> | ||||
|         /// <param name="instance">The instance of the class.</param> | ||||
|         /// <param name="methodName">The method name related to the cache key.</param> | ||||
|         /// <param name="parameters">The parameters used to generate the key.</param> | ||||
|         /// <returns>A normalized cache key string.</returns> | ||||
|         public static string GenerateCacheKey(object instance, string methodName, params object[] parameters) | ||||
|         { | ||||
|             var className = instance.GetType().Name; | ||||
|             var keyBuilder = new StringBuilder($"{className}.{methodName}"); | ||||
|  | ||||
|             foreach (var param in parameters) | ||||
|             { | ||||
|                 string normalizedParam = NormalizeParameter(param); | ||||
|                 keyBuilder.Append($".{normalizedParam}"); | ||||
|             } | ||||
|  | ||||
|             return keyBuilder.ToString(); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Normalizes a parameter value for use in a cache key. | ||||
|         /// </summary> | ||||
|         /// <param name="param">The parameter to normalize.</param> | ||||
|         /// <returns>A normalized string representation of the parameter.</returns> | ||||
|         private static string NormalizeParameter(object param) | ||||
|         { | ||||
|             if (param == null) | ||||
|             { | ||||
|                 return "null"; | ||||
|             } | ||||
|  | ||||
|             string paramString; | ||||
|  | ||||
|             if (param is DateTime dateTime) | ||||
|             { | ||||
|                 paramString = dateTime.ToString("yyyyMMdd"); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 paramString = param.ToString(); | ||||
|             } | ||||
|  | ||||
|             // Replace special characters with an underscore. | ||||
|             return Regex.Replace(paramString, @"[^a-zA-Z0-9]", "_"); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Sergio Matias Urquin
					Sergio Matias Urquin