diff options
author | crupest <crupest@outlook.com> | 2022-12-07 20:41:20 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-12-20 20:32:52 +0800 |
commit | 78396f289ab50ce414bd8f65af8854ffb52fff48 (patch) | |
tree | 59f3a1ebb2a8e896ad21bdcf5736fc0328c84e76 /docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DynamicParametersExtensions.cs | |
parent | 1870bc78d4a2733246322c5540761da852afe713 (diff) | |
download | crupest-78396f289ab50ce414bd8f65af8854ffb52fff48.tar.gz crupest-78396f289ab50ce414bd8f65af8854ffb52fff48.tar.bz2 crupest-78396f289ab50ce414bd8f65af8854ffb52fff48.zip |
Develop secret api. v17
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DynamicParametersExtensions.cs')
-rw-r--r-- | docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DynamicParametersExtensions.cs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DynamicParametersExtensions.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DynamicParametersExtensions.cs new file mode 100644 index 0000000..956206d --- /dev/null +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DynamicParametersExtensions.cs @@ -0,0 +1,41 @@ +using System.Data; +using System.Diagnostics; +using Dapper; + +namespace CrupestApi.Commons.Crud; + +public static class DynamicParametersExtensions +{ + 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 static string GenerateRandomParameterName(DynamicParameters parameters) + { + var parameterName = GenerateRandomKey(10); + int retryTimes = 1; + while (parameters.ParameterNames.Contains(parameterName)) + { + retryTimes++; + Debug.Assert(retryTimes <= 100); + parameterName = GenerateRandomKey(10); + } + return parameterName; + } + + public static string AddRandomNameParameter(this DynamicParameters parameters, object? value) + { + var parameterName = GenerateRandomParameterName(parameters); + parameters.Add(parameterName, value); + return parameterName; + } +} |