using System; using System.Linq; using System.Linq.Expressions; using ServiceStack.OrmLite; using zero.Extensions; namespace zero.Sqlite; public static class SqlExpressionExtensions { public static SqlExpression Paging(this SqlExpression source, int pageNumber, int pageSize) { pageNumber = pageNumber.Limit(1, 10_000_000); pageSize = pageSize.Limit(1, 1_000); if (pageNumber <= 0 || pageSize <= 0) { throw new NotSupportedException("Both pageNumber and pageSize must be greater than zero"); } return source.Skip((pageNumber - 1) * pageSize).Take(pageSize); } public static SqlExpression WhereIf(this SqlExpression source, Expression> predicate, bool condition, Expression> elsePredicate = null) { if (condition) { return source.Where(predicate); } return elsePredicate != null ? source.Where(elsePredicate) : source; } }