
com.github.chengyuxing.sql.PagedResource Maven / Gradle / Ivy
package com.github.chengyuxing.sql;
import com.github.chengyuxing.sql.page.PageHelper;
import org.jetbrains.annotations.NotNull;
import java.util.Collections;
import java.util.List;
import java.util.function.BiFunction;
/**
* Paged resource object.
*
* @param data type
*/
public record PagedResource(PageHelper pager, List data) {
/**
* Returns a PagedResource.
*
* @param pager page helper instance
* @param data paged data
* @param data type
* @return PagedResource instance
*/
public static PagedResource of(@NotNull PageHelper pager, List data) {
return new PagedResource<>(pager, data);
}
/**
* Returns an empty PagedResource.
*
* @param data type
* @return empty PagedResource
*/
public static PagedResource empty() {
return of(new PageHelper() {
@Override
public @NotNull String pagedSql(char namedParamPrefix, @NotNull String sql) {
return "";
}
@Override
public @NotNull Args pagedArgs() {
return Args.of();
}
}, Collections.emptyList());
}
/**
* Convert paged resource to custom structured result, e.g.
*
*
* ({@link PageHelper pager}, data) -> {@link com.github.chengyuxing.common.DataRow DataRow}.of(
* "length", pager.getRecordCount(),
* "data", data)
* );
*
*
*
* @param converter (PageHelper, List) -> (new result)
* @param result type
* @return new structured result
*/
public R to(BiFunction, R> converter) {
return converter.apply(pager, data);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy