aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ParamMap.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2024-11-11 01:12:29 +0800
committerYuqian Yang <crupest@crupest.life>2024-12-19 21:42:01 +0800
commita7fb0508867ee53934be18a6606aa8bc12c2645b (patch)
tree5994f0a62733b13f9f330e3515260ae20dc4a0bd /docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ParamMap.cs
parent7692763f83ad1be735b0b9e9ab0af8ce666d8de8 (diff)
downloadcrupest-a7fb0508867ee53934be18a6606aa8bc12c2645b.tar.gz
crupest-a7fb0508867ee53934be18a6606aa8bc12c2645b.tar.bz2
crupest-a7fb0508867ee53934be18a6606aa8bc12c2645b.zip
HALF WORK: 2024.12.19
Re-organize file structure.
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ParamMap.cs')
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ParamMap.cs73
1 files changed, 0 insertions, 73 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ParamMap.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ParamMap.cs
deleted file mode 100644
index 37d77ca..0000000
--- a/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;
- }
-}