diff options
author | crupest <crupest@outlook.com> | 2022-12-06 11:14:32 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-12-20 20:32:52 +0800 |
commit | 58d109a1cde88ee9614852ef301f2a8be359cc1c (patch) | |
tree | b33df5481aa9ea36e9236976725e64d00e05327f /docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs | |
parent | 3d55a8a37e0e56e56a0bdad4fbb7a69a5d36d54b (diff) | |
download | crupest-58d109a1cde88ee9614852ef301f2a8be359cc1c.tar.gz crupest-58d109a1cde88ee9614852ef301f2a8be359cc1c.tar.bz2 crupest-58d109a1cde88ee9614852ef301f2a8be359cc1c.zip |
Develop secret api. v11
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs')
-rw-r--r-- | docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs | 30 |
1 files changed, 30 insertions, 0 deletions
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<string>(); + if (whereClause is not null) + relatedColumns.UnionWith(((IWhereClause)whereClause).GetRelatedColumns() ?? Enumerable.Empty<string>()); + 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 |