WpPaginationQuery.java

package io.github.evisentin.wordpress.rest.client.domain.model.query;

/**
 * Represents pagination parameters with a page number and page size.
 *
 * <p>This class is immutable and validates that both {@code pageNumber}
 * and {@code pageSize} are greater than zero.</p>
 *
 * @param pageNumber
 *         The page number to retrieve (1-based index).
 * @param pageSize
 *         The number of items per page.
 */
public record WpPaginationQuery(int pageNumber, int pageSize) {

    /**
     * Creates a new {@code WpPaginationQuery} instance.
     *
     * @param pageNumber
     *         the page number (must be greater than 0)
     * @param pageSize
     *         the number of items per page (must be greater than 0)
     *
     * @throws IllegalArgumentException
     *         if {@code pageNumber < 1} or {@code pageSize < 1}
     */
    public WpPaginationQuery {
        if (pageNumber < 1)
            throw new IllegalArgumentException("Page number must be greater than 0");
        if (pageSize < 1)
            throw new IllegalArgumentException("Page size must be greater than 0");
    }
}