From d7cadc180af0dd97fe3224d66b233f38c2b5ae9f Mon Sep 17 00:00:00 2001 From: Ilya Date: Sat, 2 Sep 2023 07:28:48 +0300 Subject: [PATCH] all tests pass on the master --- .../ApprovalTests/CompileFlatColumns.cs | 10 +++++--- ...aseSensitive_PostgresCompiler.verified.sql | 6 ++--- ...ion.Contains_PostgresCompiler.verified.sql | 6 ++--- ...ndition.Ends_PostgresCompiler.verified.sql | 6 ++--- ...apeCharacter_PostgresCompiler.verified.sql | 6 ++--- ...ition.Starts_PostgresCompiler.verified.sql | 6 ++--- QueryBuilder/Compilers/Compiler.Conditions.cs | 17 +++++-------- QueryBuilder/Compilers/Compiler.cs | 4 +-- QueryBuilder/Compilers/PostgresCompiler.cs | 25 ++++++------------- 9 files changed, 36 insertions(+), 50 deletions(-) diff --git a/QueryBuilder.Tests/ApprovalTests/CompileFlatColumns.cs b/QueryBuilder.Tests/ApprovalTests/CompileFlatColumns.cs index cc1cae3f..ca76820e 100644 --- a/QueryBuilder.Tests/ApprovalTests/CompileFlatColumns.cs +++ b/QueryBuilder.Tests/ApprovalTests/CompileFlatColumns.cs @@ -654,7 +654,7 @@ public Task ReturnId(Compiler compiler) public Task InsertQueryClause(Compiler compiler) { return new Query("X") - .AsInsert(new[]{"a"}, new Query("Y")) + .AsInsert(new[] { "a" }, new Query("Y")) .Verify(compiler); } } @@ -676,9 +676,11 @@ public Task Join(Compiler compiler) } [Theory] [ClassData(typeof(AllCompilers))] - public Task Join_NoFrom(Compiler compiler) + public void Join_NoFrom(Compiler compiler) { - return new Query().CrossJoin("Y").AsDelete().Verify(compiler); + Assert.Throws( + () => compiler.Compile(new Query().CrossJoin("Y").AsDelete())) + .Message.Should().Be("No table set to delete"); } } @@ -690,7 +692,7 @@ public sealed class CompileUpdateQuery public Task CompileUpdate(Compiler compiler) { return new Query("X") - .AsUpdate(new {a = 1}) + .AsUpdate(new { a = 1 }) .Verify(compiler); } diff --git a/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.CaseSensitive_PostgresCompiler.verified.sql b/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.CaseSensitive_PostgresCompiler.verified.sql index f63c2851..54f4bed2 100644 --- a/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.CaseSensitive_PostgresCompiler.verified.sql +++ b/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.CaseSensitive_PostgresCompiler.verified.sql @@ -2,16 +2,16 @@ SELECT * FROM "X" -WHERE "a" like 'K'% +WHERE "a" like 'K%' ----------- RAW ------------- SELECT * FROM "X" -WHERE "a" like ?% +WHERE "a" like ? --------PARAMETRIZED -------- SELECT * FROM "X" -WHERE "a" like @p0% \ No newline at end of file +WHERE "a" like @p0 \ No newline at end of file diff --git a/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.Contains_PostgresCompiler.verified.sql b/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.Contains_PostgresCompiler.verified.sql index a6a8479f..2f670742 100644 --- a/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.Contains_PostgresCompiler.verified.sql +++ b/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.Contains_PostgresCompiler.verified.sql @@ -2,16 +2,16 @@ SELECT * FROM "X" -WHERE "a" ilike %'k'% +WHERE "a" ilike '%k%' ----------- RAW ------------- SELECT * FROM "X" -WHERE "a" ilike %?% +WHERE "a" ilike ? --------PARAMETRIZED -------- SELECT * FROM "X" -WHERE "a" ilike %@p0% \ No newline at end of file +WHERE "a" ilike @p0 \ No newline at end of file diff --git a/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.Ends_PostgresCompiler.verified.sql b/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.Ends_PostgresCompiler.verified.sql index 16a60c12..7475992d 100644 --- a/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.Ends_PostgresCompiler.verified.sql +++ b/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.Ends_PostgresCompiler.verified.sql @@ -2,16 +2,16 @@ SELECT * FROM "X" -WHERE "a" ilike %'k' +WHERE "a" ilike '%k' ----------- RAW ------------- SELECT * FROM "X" -WHERE "a" ilike %? +WHERE "a" ilike ? --------PARAMETRIZED -------- SELECT * FROM "X" -WHERE "a" ilike %@p0 \ No newline at end of file +WHERE "a" ilike @p0 \ No newline at end of file diff --git a/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.EscapeCharacter_PostgresCompiler.verified.sql b/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.EscapeCharacter_PostgresCompiler.verified.sql index 21b1d456..df7f1f5f 100644 --- a/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.EscapeCharacter_PostgresCompiler.verified.sql +++ b/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.EscapeCharacter_PostgresCompiler.verified.sql @@ -2,16 +2,16 @@ SELECT * FROM "X" -WHERE "a" ilike 'K*'% ESCAPE '*' +WHERE "a" ilike 'K*%' ESCAPE '*' ----------- RAW ------------- SELECT * FROM "X" -WHERE "a" ilike ?% ESCAPE '*' +WHERE "a" ilike ? ESCAPE '*' --------PARAMETRIZED -------- SELECT * FROM "X" -WHERE "a" ilike @p0% ESCAPE '*' \ No newline at end of file +WHERE "a" ilike @p0 ESCAPE '*' \ No newline at end of file diff --git a/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.Starts_PostgresCompiler.verified.sql b/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.Starts_PostgresCompiler.verified.sql index d65e6cae..fc20bd35 100644 --- a/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.Starts_PostgresCompiler.verified.sql +++ b/QueryBuilder.Tests/ApprovalTests/output/CompileBasicStringCondition.Starts_PostgresCompiler.verified.sql @@ -2,16 +2,16 @@ SELECT * FROM "X" -WHERE "a" ilike 'k'% +WHERE "a" ilike 'k%' ----------- RAW ------------- SELECT * FROM "X" -WHERE "a" ilike ?% +WHERE "a" ilike ? --------PARAMETRIZED -------- SELECT * FROM "X" -WHERE "a" ilike @p0% \ No newline at end of file +WHERE "a" ilike @p0 \ No newline at end of file diff --git a/QueryBuilder/Compilers/Compiler.Conditions.cs b/QueryBuilder/Compilers/Compiler.Conditions.cs index 35a2a388..cbfaeae8 100644 --- a/QueryBuilder/Compilers/Compiler.Conditions.cs +++ b/QueryBuilder/Compilers/Compiler.Conditions.cs @@ -124,18 +124,13 @@ protected virtual void CompileBasicStringCondition( writer.Append(" "); if (isLikeOperator) { - switch (x.Operator) + value = x.Operator switch { - case "starts": - value = $"{value}%"; - break; - case "ends": - value = $"%{value}"; - break; - case "contains": - value = $"%{value}%"; - break; - } + "starts" => $"{value}%", + "ends" => $"%{value}", + "contains" => $"%{value}%", + _ => value + }; } writer.AppendParameter(query, x.CaseSensitive ? value : value.ToLowerInvariant()); diff --git a/QueryBuilder/Compilers/Compiler.cs b/QueryBuilder/Compilers/Compiler.cs index 4dcde525..ba948463 100644 --- a/QueryBuilder/Compilers/Compiler.cs +++ b/QueryBuilder/Compilers/Compiler.cs @@ -43,7 +43,7 @@ public Compiler Whitelist(params string[] operators) return this; } - public void CompileRaw(Query query, Writer writer) + internal void CompileRaw(Query query, Writer writer) { // handle CTEs if (query.HasComponent("cte", EngineCode)) @@ -162,7 +162,7 @@ private void CompileDeleteQuery(Query query, Writer writer) { var fromClause = query.GetOneComponent("from", EngineCode); if (fromClause is not FromClause c) - return; + throw new InvalidOperationException("No table set to delete"); writer.Append("DELETE "); writer.AppendName(c.Alias); diff --git a/QueryBuilder/Compilers/PostgresCompiler.cs b/QueryBuilder/Compilers/PostgresCompiler.cs index 34d39a4f..0039f627 100644 --- a/QueryBuilder/Compilers/PostgresCompiler.cs +++ b/QueryBuilder/Compilers/PostgresCompiler.cs @@ -28,25 +28,14 @@ protected override void CompileBasicStringCondition( writer.Append(" "); if (isLikeOperator) { - switch (x.Operator) + value = x.Operator switch { - case "starts": - writer.AppendParameter(query, value); - writer.Append("%"); - break; - case "ends": - writer.Append("%"); - writer.AppendParameter(query, value); - break; - case "contains": - writer.Append("%"); - writer.AppendParameter(query, value); - writer.Append("%"); - break; - default: - writer.AppendParameter(query, value); - break; - } + "starts" => $"{value}%", + "ends" => $"%{value}", + "contains" => $"%{value}%", + _ => value + }; + writer.AppendParameter(query, value); } else {