将Feature/XP.Common和Feature/XP.Hardware分支合并至Develop/XP.forHardwareAndCommon,完善XPapp注册和相关硬件类库通用类库功能。
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using XP.Common.Database.Models;
|
||||
|
||||
namespace XP.Common.Database.Helpers
|
||||
{
|
||||
/// <summary>
|
||||
/// 分页计算辅助工具
|
||||
/// </summary>
|
||||
public static class PaginationHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 计算分页偏移量(SQLite OFFSET)
|
||||
/// </summary>
|
||||
public static int CalculateOffset(PaginationRequest pagination)
|
||||
{
|
||||
if (pagination.PageIndex < 1) pagination.PageIndex = 1;
|
||||
if (pagination.PageSize < 1) pagination.PageSize = 20;
|
||||
return (pagination.PageIndex - 1) * pagination.PageSize;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 验证并修正分页参数
|
||||
/// </summary>
|
||||
public static PaginationRequest ValidateAndFix(PaginationRequest pagination)
|
||||
{
|
||||
var fixedPagination = new PaginationRequest
|
||||
{
|
||||
PageIndex = pagination.PageIndex < 1 ? 1 : pagination.PageIndex,
|
||||
PageSize = pagination.PageSize < 1 ? 20 : (pagination.PageSize > 1000 ? 1000 : pagination.PageSize),
|
||||
OrderBy = pagination.OrderBy ?? string.Empty
|
||||
};
|
||||
return fixedPagination;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace XP.Common.Database.Helpers
|
||||
{
|
||||
/// <summary>
|
||||
/// 通用CRUD SQL构建器(适配SQLite)
|
||||
/// </summary>
|
||||
public static class SqlBuilderHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 构建插入SQL
|
||||
/// </summary>
|
||||
/// <param name="tableName">表名</param>
|
||||
/// <param name="columns">列名集合</param>
|
||||
/// <returns>插入SQL(参数名:@列名)</returns>
|
||||
public static string BuildInsertSql(string tableName, IEnumerable<string> columns)
|
||||
{
|
||||
if (string.IsNullOrEmpty(tableName)) throw new ArgumentNullException(nameof(tableName));
|
||||
var columnList = columns?.ToList() ?? throw new ArgumentNullException(nameof(columns));
|
||||
if (columnList.Count == 0) throw new ArgumentException("列名集合不能为空");
|
||||
|
||||
var columnsStr = string.Join(", ", columnList);
|
||||
var paramsStr = string.Join(", ", columnList.Select(c => $"@{c}"));
|
||||
return $"INSERT INTO {tableName} ({columnsStr}) VALUES ({paramsStr})";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 构建更新SQL
|
||||
/// </summary>
|
||||
/// <param name="tableName">表名</param>
|
||||
/// <param name="updateColumns">更新列名</param>
|
||||
/// <param name="whereColumns">条件列名(如Id)</param>
|
||||
/// <returns>更新SQL</returns>
|
||||
public static string BuildUpdateSql(string tableName, IEnumerable<string> updateColumns, IEnumerable<string> whereColumns)
|
||||
{
|
||||
if (string.IsNullOrEmpty(tableName)) throw new ArgumentNullException(nameof(tableName));
|
||||
var updateList = updateColumns?.ToList() ?? throw new ArgumentNullException(nameof(updateColumns));
|
||||
var whereList = whereColumns?.ToList() ?? throw new ArgumentNullException(nameof(whereColumns));
|
||||
if (updateList.Count == 0) throw new ArgumentException("更新列名集合不能为空");
|
||||
if (whereList.Count == 0) throw new ArgumentException("条件列名集合不能为空");
|
||||
|
||||
var updateStr = string.Join(", ", updateList.Select(c => $"{c}=@{c}"));
|
||||
var whereStr = string.Join(" AND ", whereList.Select(c => $"{c}=@{c}"));
|
||||
return $"UPDATE {tableName} SET {updateStr} WHERE {whereStr}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 构建删除SQL
|
||||
/// </summary>
|
||||
public static string BuildDeleteSql(string tableName, IEnumerable<string> whereColumns)
|
||||
{
|
||||
if (string.IsNullOrEmpty(tableName)) throw new ArgumentNullException(nameof(tableName));
|
||||
var whereList = whereColumns?.ToList() ?? throw new ArgumentNullException(nameof(whereColumns));
|
||||
if (whereList.Count == 0) throw new ArgumentException("条件列名集合不能为空");
|
||||
|
||||
var whereStr = string.Join(" AND ", whereList.Select(c => $"{c}=@{c}"));
|
||||
return $"DELETE FROM {tableName} WHERE {whereStr}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 构建查询SQL
|
||||
/// </summary>
|
||||
public static string BuildSelectSql(string tableName, IEnumerable<string> columns, IEnumerable<string>? whereColumns = null, string orderBy = "")
|
||||
{
|
||||
if (string.IsNullOrEmpty(tableName)) throw new ArgumentNullException(nameof(tableName));
|
||||
var columnList = columns?.ToList() ?? throw new ArgumentNullException(nameof(columns));
|
||||
if (columnList.Count == 0) columnList.Add("*");
|
||||
|
||||
var columnsStr = string.Join(", ", columnList);
|
||||
var sql = new StringBuilder($"SELECT {columnsStr} FROM {tableName}");
|
||||
|
||||
// 添加WHERE条件
|
||||
if (whereColumns != null && whereColumns.Any())
|
||||
{
|
||||
var whereStr = string.Join(" AND ", whereColumns.Select(c => $"{c}=@{c}"));
|
||||
sql.Append($" WHERE {whereStr}");
|
||||
}
|
||||
|
||||
// 添加排序
|
||||
if (!string.IsNullOrEmpty(orderBy))
|
||||
{
|
||||
sql.Append($" ORDER BY {orderBy}");
|
||||
}
|
||||
|
||||
return sql.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace XP.Common.Database.Helpers
|
||||
{
|
||||
/// <summary>
|
||||
/// SQLite参数化查询辅助工具
|
||||
/// </summary>
|
||||
public static class SqliteParameterHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 创建参数字典
|
||||
/// </summary>
|
||||
/// <param name="keyValues">参数名-值对(如 ("Id", 1), ("Name", "Test"))</param>
|
||||
/// <returns>参数字典</returns>
|
||||
public static Dictionary<string, object> CreateParameters(params (string Key, object Value)[] keyValues)
|
||||
{
|
||||
var parameters = new Dictionary<string, object>();
|
||||
foreach (var (key, value) in keyValues)
|
||||
{
|
||||
parameters.Add(key, value);
|
||||
}
|
||||
return parameters;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 合并参数字典
|
||||
/// </summary>
|
||||
public static Dictionary<string, object> MergeParameters(params Dictionary<string, object>[] paramLists)
|
||||
{
|
||||
var merged = new Dictionary<string, object>();
|
||||
foreach (var paramList in paramLists)
|
||||
{
|
||||
foreach (var (key, value) in paramList)
|
||||
{
|
||||
if (!merged.ContainsKey(key))
|
||||
{
|
||||
merged.Add(key, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
return merged;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user