PageRequest.java

package com.github.jenkaby.bikerental.shared.domain.model.vo;

import org.jspecify.annotations.Nullable;

public record PageRequest(int size, int page, @Nullable String sortBy) {

    private static final PageRequest SINGLE_PAGE = new PageRequest(1, 0, null);

    public PageRequest {
        if (page < 0 || size <= 0) {
            throw new IllegalArgumentException("Invalid paging parameters");
        }
    }

    public int offset() {
        return page * size;
    }

    public int limit() {
        return size;
    }

    public static PageRequest singleItem() {
        return SINGLE_PAGE;
    }
}