@adocasts.com/dto
Version:
Easily make and generate DTOs from Lucid Models
29 lines (28 loc) • 1.27 kB
JavaScript
export default class SimplePaginatorDto {
/**
* Constructs a new instance of the SimplePaginatorDto class.
*
* @param {SimplePaginatorContract<Model>|ModelPaginatorContract<Model>} paginator - The paginator object containing the data.
* @param {StaticDto<Model, Dto>} dto - The static DTO class used to map the data.
* @param {SimplePaginatorDtoMetaRange} [range] - Optional range for the paginator.
*/
constructor(paginator, dto, range) {
this.data = paginator.all().map((row) => new dto(row));
this.meta = {
total: paginator.total,
perPage: paginator.perPage,
currentPage: paginator.currentPage,
lastPage: paginator.lastPage,
firstPage: paginator.firstPage,
firstPageUrl: paginator.getUrl(1),
lastPageUrl: paginator.getUrl(paginator.lastPage),
nextPageUrl: paginator.getNextPageUrl(),
previousPageUrl: paginator.getPreviousPageUrl(),
};
if (range?.start || range?.end) {
const start = range?.start || paginator.firstPage;
const end = range?.end || paginator.lastPage;
this.meta.pagesInRange = paginator.getUrlsForRange(start, end);
}
}
}