33 lines
601 B
TypeScript
33 lines
601 B
TypeScript
import { PaginationDto, PaginationMetaDto } from '../dto/pagination.dto';
|
|
|
|
export function createPaginationMeta(
|
|
paginationDto: PaginationDto,
|
|
total: number,
|
|
): PaginationMetaDto {
|
|
const { page = 1, limit = 10 } = paginationDto;
|
|
const totalPages = Math.ceil(total / limit);
|
|
|
|
return {
|
|
page,
|
|
limit,
|
|
total,
|
|
totalPages,
|
|
hasNext: page < totalPages,
|
|
hasPrev: page > 1,
|
|
};
|
|
}
|
|
|
|
export function paginate<T>(
|
|
data: T[],
|
|
paginationDto: PaginationDto,
|
|
total: number,
|
|
) {
|
|
const meta = createPaginationMeta(paginationDto, total);
|
|
|
|
return {
|
|
data,
|
|
meta,
|
|
};
|
|
}
|
|
|