All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.ouestfrance.querydsl.postgrest.model.RangeResponse Maven / Gradle / Ivy

package fr.ouestfrance.querydsl.postgrest.model;

import java.util.List;

/**
 * Postgrest range response
 *
 * @param    type of the page
 * @param data  Elements returned
 * @param range Range returned (first returned, last returned, total elements)
 */
public record RangeResponse(List data, HeaderRange range) {

    /**
     * Create a range response from a list of elements
     *
     * @param items elements
     * @param    type of the elements
     * @return range response
     */
    @SafeVarargs
    public static  RangeResponse of(T... items) {
        return new RangeResponse<>(List.of(items), null);
    }

    /**
     * Retrieve total elements from range response
     *
     * @return total elements
     */
    public long getTotalElements() {
        return (range != null) ? range.getTotalElements() : data.size();
    }

    /**
     * Retrieve page size from range response
     *
     * @return page size
     */
    public int getPageSize() {
        if (range != null) {
            return range.getLimit() - range.getOffset() + 1;
        }
        return data.isEmpty() ? 1 : data.size();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy