using SparkClient.Model.Entity.Base;
using System.Reflection;
using System.Runtime.CompilerServices;
namespace SparkClient.Model.Entity;
///
/// 系统设置实体
///
public class CutterConfigEntity
{
public static readonly string TableName = "CUTTER_CONFIG";
[DbField("GUID")]
public Guid GUID { get; set; }
///
/// 项目名称
///
[DbField("ITEM_NAME")]
public required string? ItemName { get; set; }
///
/// key
///
[DbField("KEY")]
public required string? Key { get; set; }
///
/// value
///
[DbField("VALUE")]
public required string? Value { get; set; }
private static Dictionary GetFieldMappings()
{
var properties = typeof(CutterConfigEntity).GetProperties(BindingFlags.Public | BindingFlags.Instance);
return properties
.Where(p => Attribute.IsDefined(p, typeof(DbFieldAttribute)))
.ToDictionary(
p => p.Name,
p => ((DbFieldAttribute)p.GetCustomAttribute(typeof(DbFieldAttribute))).FieldName
);
}
// 生成 Insert 语句
public string GenerateInsertSQL()
{
var mappings = GetFieldMappings();
var columns = string.Join(", ", mappings.Values);
var values = string.Join(", ", mappings.Keys.Select(k => $"@{k}"));
return $"INSERT INTO {TableName} ({columns}) VALUES ({values});";
}
// 生成 Update 语句
public string GenerateUpdateSQL(Dictionary? fieldsToUpdate = null)
{
if (fieldsToUpdate == null || fieldsToUpdate.Count == 0)
{
// 默认根据 ID 更新所有字段
var mappings = GetFieldMappings();
var setClause = string.Join(", ", mappings.Values.Select(f => $"{f} = @{f}"));
return $"UPDATE {TableName} SET {setClause} WHERE GUID = @GUID;";
}
else
{
// 根据传入的字段更新
var setClause = string.Join(", ", fieldsToUpdate.Keys.Select(f => $"{f} = @{f}"));
return $"UPDATE {TableName} SET {setClause} WHERE GUID = @GUID;";
}
}
// 生成 Delete 语句
public string GenerateDeleteSQL(Dictionary? conditions = null)
{
if (conditions == null || conditions.Count == 0)
{
// 默认根据 ID 删除
return $"DELETE FROM {TableName} WHERE GUID ='" + GUID.ToString() + "';";
}
else
{
// 根据传入条件删除
var whereClause = string.Join(" AND ", conditions.Keys.Select(f => $"{f} = @{f}"));
return $"DELETE FROM {TableName} WHERE {whereClause};";
}
}
// 生成 Select 语句
public string GenerateSelectSQL(List? columns = null, Dictionary? conditions = null)
{
var mappings = GetFieldMappings();
// 如果没有指定列,则查询所有列
string selectColumns = columns != null && columns.Any()
? string.Join(", ", columns.Select(c => mappings[c]))
: string.Join(", ", mappings.Values);
string sql = $"SELECT {selectColumns} FROM {TableName}";
if (conditions != null && conditions.Any())
{
var whereClause = string.Join(" AND ", conditions.Keys.Select(c => $"{mappings[c]} = @{c}"));
sql += $" WHERE {whereClause}";
}
return sql;
}
}