aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-12-06 18:32:21 +0800
committercrupest <crupest@outlook.com>2022-12-20 20:32:52 +0800
commitdbef06668f4e8b81eb466faa11bb37709c79f09c (patch)
tree84ba25cc92cf75e3ac150209c65ad043774144df /docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs
parent46ee538c2ffe3ea76c647524c74c2ce6add8a2d3 (diff)
downloadcrupest-dbef06668f4e8b81eb466faa11bb37709c79f09c.tar.gz
crupest-dbef06668f4e8b81eb466faa11bb37709c79f09c.tar.bz2
crupest-dbef06668f4e8b81eb466faa11bb37709c79f09c.zip
Develop secret api. v14
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs')
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs70
1 files changed, 69 insertions, 1 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs
index 9610e40..c58897c 100644
--- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs
+++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs
@@ -190,6 +190,46 @@ CREATE TABLE {tableName}(
return result.ToString();
}
+ public InsertClause GenerateInsertClauseFromObject(object value)
+ {
+ var insertClause = InsertClause.Create();
+
+ foreach (var column in ColumnInfos)
+ {
+ var propertyInfo = column.PropertyInfo;
+ if (propertyInfo is null)
+ {
+ propertyInfo = EntityType.GetProperty(column.PropertyName);
+ }
+ if (propertyInfo is null)
+ {
+ if (column.IsAutoIncrement)
+ {
+ continue;
+ }
+ else
+ {
+ throw new Exception($"Property {column.PropertyName} not found.");
+ }
+ }
+
+ var propertyValue = propertyInfo.GetValue(value);
+ if (propertyValue is null)
+ {
+ if (column.IsAutoIncrement)
+ {
+ continue;
+ }
+ else
+ {
+ insertClause.Add(column.SqlColumnName, propertyValue);
+ }
+ }
+ }
+
+ return insertClause;
+ }
+
public string GenerateInsertSql(InsertClause insertClause, out DynamicParameters parameters)
{
var relatedColumns = insertClause.GetRelatedColumns();
@@ -244,4 +284,32 @@ CREATE TABLE {tableName}(
return sb.ToString();
}
-} \ No newline at end of file
+
+ public string GenerateDeleteSql(WhereClause? whereClause, out DynamicParameters parameters)
+ {
+ if (whereClause is not null)
+ {
+ var relatedColumns = ((IWhereClause)whereClause).GetRelatedColumns() ?? new List<string>();
+ foreach (var column in relatedColumns)
+ {
+ if (!ColumnNameList.Contains(column))
+ {
+ throw new ArgumentException($"Column {column} is not in the table.");
+ }
+ }
+ }
+
+ parameters = new DynamicParameters();
+
+ StringBuilder sb = new StringBuilder("DELETE FROM ");
+ sb.Append(TableName);
+ if (whereClause is not null)
+ {
+ sb.Append(" WHERE ");
+ sb.Append(whereClause.GenerateSql(parameters));
+ }
+ sb.Append(';');
+
+ return sb.ToString();
+ }
+}