aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-12-06 11:14:32 +0800
committercrupest <crupest@outlook.com>2022-12-20 20:32:52 +0800
commit58d109a1cde88ee9614852ef301f2a8be359cc1c (patch)
treeb33df5481aa9ea36e9236976725e64d00e05327f /docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs
parent3d55a8a37e0e56e56a0bdad4fbb7a69a5d36d54b (diff)
downloadcrupest-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.cs30
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