diff options
| -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", ";" }); +    } +} | 
