diff options
author | crupest <crupest@outlook.com> | 2022-12-09 08:45:54 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-12-20 20:32:52 +0800 |
commit | bed807e3f8fab2f8b6ea3409886aac9f23f0f761 (patch) | |
tree | 78ea36f716b086c1ddb2956227bd3ee100c3d346 /docker/crupest-api | |
parent | 20989284d1884892b469e4824e1b8a41d6743bc2 (diff) | |
download | crupest-bed807e3f8fab2f8b6ea3409886aac9f23f0f761.tar.gz crupest-bed807e3f8fab2f8b6ea3409886aac9f23f0f761.tar.bz2 crupest-bed807e3f8fab2f8b6ea3409886aac9f23f0f761.zip |
Develop secret api. v20
Diffstat (limited to 'docker/crupest-api')
-rw-r--r-- | docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/SqlCompareHelper.cs | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/SqlCompareHelper.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/SqlCompareHelper.cs new file mode 100644 index 0000000..8f3e5c6 --- /dev/null +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/SqlCompareHelper.cs @@ -0,0 +1,73 @@ +using System.Text; + +namespace CrupestApi.Commons.Crud.Tests; + +public class SqlCompareHelper +{ + public static List<string> SqlExtractWords(string? sql, bool toLower = true) + { + var result = new List<string>(); + + if (string.IsNullOrEmpty(sql)) + { + return result; + } + + var current = 0; + + StringBuilder? wordBuilder = null; + + while (current < sql.Length) + { + if (char.IsWhiteSpace(sql[current])) + { + if (wordBuilder is not null) + { + result.Add(wordBuilder.ToString()); + wordBuilder = null; + } + } + else if (sql[current] == ';') + { + if (wordBuilder is not null) + { + result.Add(wordBuilder.ToString()); + wordBuilder = null; + } + result.Add(";"); + } + else + { + if (wordBuilder is not null) + { + wordBuilder.Append(sql[current]); + } + else + { + wordBuilder = new StringBuilder(sql[current]); + } + } + } + + if (wordBuilder is not null) + { + result.Add(wordBuilder.ToString()); + } + + return result; + } + + public static bool SqlEqual(string left, string right) + { + return SqlExtractWords(left) == SqlExtractWords(right); + } + + [Fact] + public void TestSqlExtractWords() + { + var sql = "SELECT * FROM TableName WHERE id = @abcd;"; + var words = SqlExtractWords(sql); + + Assert.Equal(words, new List<string> { "select", "*", "from", "tablename", "where", "id", "=", "@abcd", ";" }); + } +} |