From 59b9192db995b805db331ddd5d13ce6d2dbc458a Mon Sep 17 00:00:00 2001 From: Alex Macocian Date: Tue, 13 May 2025 18:03:52 +0200 Subject: [PATCH] Implement DeleteAll --- Constants.cs | 1 + Squealify.csproj | 2 +- Table/BasicQueryMethodGenerator.cs | 21 +++++++++++++++++++++ TableContextGenerator.cs | 3 +++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Constants.cs b/Constants.cs index d9372bf..7551009 100644 --- a/Constants.cs +++ b/Constants.cs @@ -99,6 +99,7 @@ public static class Constants public const string UpsertMethodName = "Upsert"; public const string UpdateMethodName = "Update"; public const string DeleteMethodName = "Delete"; + public const string DeleteAllMethodName = "DeleteAll"; public const string FindMethodName = "Find"; public const string FindAllMethodName = "FindAll"; } diff --git a/Squealify.csproj b/Squealify.csproj index cbba111..8cd6d1b 100644 --- a/Squealify.csproj +++ b/Squealify.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 0.8.2.1 + 0.8.2.2 latest true Alexandru Macocian diff --git a/Table/BasicQueryMethodGenerator.cs b/Table/BasicQueryMethodGenerator.cs index 788633b..b05b4c3 100644 --- a/Table/BasicQueryMethodGenerator.cs +++ b/Table/BasicQueryMethodGenerator.cs @@ -133,6 +133,27 @@ command.CommandText = @""{placeHolder}""; return new MethodWithSqlStatement(methodBuilder, placeHolder, sql.ToString()); } + public static MethodWithSqlStatement CreateDeleteAllStatement(TableContext context) + { + var placeHolder = $"DeleteAll{context.DboType}"; + var sql = new StringBuilder(); + sql.AppendLine() + .AppendLine($"\t\t\tDELETE FROM {context.TableName};"); + + var bodyBuilder = new StringBuilder(@$" +using var command = this.{Constants.DbConnectionPropertyName}.CreateCommand(); +command.CommandText = @""{placeHolder}""; +"); + bodyBuilder.AppendLine("await command.ExecuteNonQueryAsync(cancellationToken);"); + + var methodBuilder = SyntaxBuilder.CreateMethod(Constants.ValueTaskType, Constants.DeleteAllMethodName) + .WithModifiers($"{Constants.Public} {Constants.Async}") + .WithParameter(Constants.CancellationTokenType, Constants.CancellationTokenArgument) + .WithBody(bodyBuilder.ToString()); + + return new MethodWithSqlStatement(methodBuilder, placeHolder, sql.ToString()); + } + public static MethodWithSqlStatement CreateFindStatement(TableContext context) { var placeHolder = $"Find{context.DboType}"; diff --git a/TableContextGenerator.cs b/TableContextGenerator.cs index 628327d..58f42b5 100644 --- a/TableContextGenerator.cs +++ b/TableContextGenerator.cs @@ -126,6 +126,7 @@ public sealed class TableContextGenerator : IIncrementalGenerator var upsertMethod = BasicQueryMethodGenerator.CreateUpsertStatement(ctx); var updateMethod = BasicQueryMethodGenerator.CreateUpdateStatement(ctx); var deleteMethod = BasicQueryMethodGenerator.CreateDeleteStatement(ctx); + var deleteAllMethod = BasicQueryMethodGenerator.CreateDeleteAllStatement(ctx); var findMethod = BasicQueryMethodGenerator.CreateFindStatement(ctx); var findAllMethod = BasicQueryMethodGenerator.CreateFindAllStatement(ctx); classBuilder @@ -136,6 +137,7 @@ public sealed class TableContextGenerator : IIncrementalGenerator .WithMethod(updateMethod.MethodBuilder) .WithMethod(deleteMethod.MethodBuilder) .WithMethod(findMethod.MethodBuilder) + .WithMethod(deleteAllMethod.MethodBuilder) .WithMethod(findAllMethod.MethodBuilder) .WithMethod(CreateParameterMethodGenerator.CreateParameterMethod()); @@ -162,6 +164,7 @@ public sealed class TableContextGenerator : IIncrementalGenerator .Replace(upsertMethod.Placeholder, upsertMethod.CommandText) .Replace(updateMethod.Placeholder, updateMethod.CommandText) .Replace(deleteMethod.Placeholder, deleteMethod.CommandText) + .Replace(deleteAllMethod.Placeholder, deleteAllMethod.CommandText) .Replace(findMethod.Placeholder, findMethod.CommandText) .Replace(findAllMethod.Placeholder, findAllMethod.CommandText);