aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs
diff options
context:
space:
mode:
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();
+ }
+}