diff options
Diffstat (limited to 'dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ParamMap.cs')
-rw-r--r-- | dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ParamMap.cs | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ParamMap.cs b/dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ParamMap.cs deleted file mode 100644 index 37d77ca..0000000 --- a/dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ParamMap.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System.Data; -using System.Diagnostics; - -namespace CrupestApi.Commons.Crud; - -/// <summary> -/// <see cref="ColumnName"/> is an optional column name related to the param. You may use it to do some column related things. Like use a more accurate conversion. -/// </summary> -/// <remarks> -/// If value is DbNullValue, it will be treated as null. -/// </remarks> -public record ParamInfo(string Name, object? Value, string? ColumnName = null); - -public class ParamList : List<ParamInfo> -{ - private static Random random = new Random(); - private const string chars = "abcdefghijklmnopqrstuvwxyz"; - public static string GenerateRandomKey(int length) - { - lock (random) - { - var result = new string(Enumerable.Repeat(chars, length) - .Select(s => s[random.Next(s.Length)]).ToArray()); - return result; - } - } - - public string GenerateRandomParameterName() - { - var parameterName = GenerateRandomKey(10); - int retryTimes = 1; - while (ContainsKey(parameterName)) - { - retryTimes++; - Debug.Assert(retryTimes <= 100); - parameterName = GenerateRandomKey(10); - } - return parameterName; - } - - - public bool ContainsKey(string name) - { - return this.SingleOrDefault(p => p.Name.Equals(name, StringComparison.OrdinalIgnoreCase)) is not null; - } - - public T? Get<T>(string key) - { - return (T?)this.SingleOrDefault(p => p.Name.Equals(key, StringComparison.OrdinalIgnoreCase))?.Value; - } - - public object? this[string key] - { - get - { - return this.SingleOrDefault(p => p.Name.Equals(key, StringComparison.OrdinalIgnoreCase)) ?? throw new KeyNotFoundException("Key not found."); - } - } - - public void Add(string name, object? value, string? columnName = null) - { - Add(new ParamInfo(name, value, columnName)); - } - - // Return the random name. - public string AddRandomNameParameter(object? value, string? columnName = null) - { - var parameterName = GenerateRandomParameterName(); - var param = new ParamInfo(parameterName, value, columnName); - Add(param); - return parameterName; - } -} |