diff options
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs')
-rw-r--r-- | docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs | 70 |
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(); + } +} |