using SQLite;
using System.Application.Models;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace System
{
public static class AsyncTableQueryExtensions
{
#region WhereOr
///
public static AsyncTableQuery WhereOr(this AsyncTableQuery source, IReadOnlyList>> predicates) where T : new()
{
var predicate = ExpressionHelper.WhereOr(predicates);
return source.Where(predicate);
}
///
public static AsyncTableQuery WhereOr(this AsyncTableQuery source, IEnumerable>> predicates) where T : new()
=> source.WhereOr(predicates.ToArray());
///
public static AsyncTableQuery WhereOr(this AsyncTableQuery source, params Expression>[] predicates) where T : new()
{
IReadOnlyList>> _predicates = predicates;
return source.WhereOr(_predicates);
}
#endregion
#region Paging
///
/// 分页查询,调用此方法前必须进行排序
///
///
///
///
///
///
public static async Task> PagingAsync(
this AsyncTableQuery source,
int current = IPagedModel.DefaultCurrent,
int pageSize = IPagedModel.DefaultPageSize) where TEntity : new()
{
var skipCount = (pageSize - 1) * pageSize;
var total = await source.CountAsync();
var dataSource = await source.Skip(skipCount).Take(pageSize).ToListAsync();
var pagedModel = new PagedModel
{
Current = current,
PageSize = pageSize,
Total = total,
DataSource = dataSource,
};
return pagedModel;
}
#endregion
}
}