finnow/web-app/src/api/pagination.ts

28 lines
583 B
TypeScript

export type SortDir = 'ASC' | 'DESC'
export interface Sort {
attribute: string
dir: SortDir
}
export interface PageRequest {
page: number
size: number
sorts: Sort[]
}
export function toQueryParams(pageRequest: PageRequest): string {
const params = new URLSearchParams()
params.append('page', pageRequest.page + '')
params.append('size', pageRequest.size + '')
for (const sort of pageRequest.sorts) {
params.append('sort', sort.attribute + ',' + sort.dir)
}
return params.toString()
}
export interface Page<T> {
items: T[]
pageRequest: PageRequest
}