package org.example.domain.finder; import com.avaje.ebean.Finder; import com.avaje.ebean.OrderBy; import com.avaje.ebean.PagedList; import com.avaje.ebean.Query; import org.example.domain.Order; import org.example.domain.query.QOrder; import java.sql.Date; import java.util.List; public class OrderFinder extends Finder<Long,Order> { /** * Construct using the default EbeanServer. */ public OrderFinder() { super(Order.class); } /** * Construct with a given EbeanServer. */ public OrderFinder(String serverName) { super(Order.class, serverName); } /** * Start a new typed query. */ protected QOrder where() { return new QOrder(db()); } /** * Find orders with the given status. */ public List<Order> byStatus(Order.Status... values) { return where() .status.in(values) .orderBy() .orderDate.desc() .id.desc() .findList(); } /** * Find new orders with an orderDate after the given since value. */ public PagedList<Order> newOrdersSince(Date since, int pageIndex) { return where() .status.in() .status.eq(Order.Status.NEW) .or() .orderDate.after(since) .orderDate.isNull() .endOr() .findPagedList(pageIndex, 100); } }