From 6482d66894bf618b727e499f1e26b1d4d7ea795e Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 6 Dec 2022 11:14:32 +0800 Subject: Develop secret api. v11 --- .../CrupestApi.Commons/Crud/TableInfo.cs | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs') diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs index 04d7f40..bf62df2 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs @@ -189,4 +189,34 @@ CREATE TABLE {tableName}( return result.ToString(); } + + public string GenerateUpdateSql(WhereClause? whereClause, UpdateClause updateClause, out DynamicParameters parameters) + { + var relatedColumns = new HashSet(); + if (whereClause is not null) + relatedColumns.UnionWith(((IWhereClause)whereClause).GetRelatedColumns() ?? Enumerable.Empty()); + relatedColumns.UnionWith(updateClause.GetRelatedColumns()); + foreach (var column in relatedColumns) + { + if (!ColumnNameList.Contains(column)) + { + throw new ArgumentException($"Field {column} is not in the table."); + } + } + + parameters = new DynamicParameters(); + + StringBuilder sb = new StringBuilder("UPDATE "); + sb.Append(TableName); + sb.Append(" SET "); + sb.Append(updateClause.GenerateSql(parameters)); + if (whereClause is not null) + { + sb.Append(" WHERE "); + sb.Append(whereClause.GenerateSql(parameters)); + } + sb.Append(';'); + + return sb.ToString(); + } } \ No newline at end of file -- cgit v1.2.3