using AutoMapper;
using Kean.Infrastructure.Database;
namespace Kean.Application.Query
{
///
/// 扩展方法
///
internal static class ExtensionMethods
{
///
/// 排序
///
/// 实体类型
/// 视图类型
/// 数据库对象
/// 排序信息
/// 映射器
/// 数据库对象
internal static ISchema Sort(this ISchema schema, string sort, IMapper mapper) where TEntity : IEntity
{
if (!string.IsNullOrEmpty(sort))
{
var order = sort[0] == '~' ? Order.Descending : Order.Ascending;
var column = order == Order.Descending ? sort[1..] : sort;
var expression = mapper.GetPropertyMapExpression(column);
if (expression != null)
{
schema = schema.OrderBy(expression, order);
}
}
return schema;
}
///
/// 分页
///
/// 实体类型
/// 数据库对象
/// 偏移
/// 限制
/// 数据库对象
internal static ISchema Page(this ISchema schema, int? offset, int? limit) where TEntity : IEntity
{
if (offset.HasValue)
{
schema = schema.Skip(offset.Value);
}
if (limit.HasValue)
{
schema = schema.Take(limit.Value);
}
return schema;
}
}
}