Files
client-web/src/modules/first-leg/utils/warehousePagination.ts
T
2026-08-06 15:32:07 +08:00

29 lines
676 B
TypeScript

export type WarehouseType = 'DOMESTIC' | 'FBA' | 'OVERSEAS'
export interface WarehousePage<T> {
records: T[]
pages: number | string
}
export interface WarehousePageQuery {
warehouseType: WarehouseType
page: number
size: number
}
export async function loadAllWarehouseRecords<T>(
warehouseType: WarehouseType,
fetchPage: (query: WarehousePageQuery) => Promise<WarehousePage<T>>,
) {
const records: T[] = []
let page = 1
let pages = 1
do {
const response = await fetchPage({ warehouseType, page, size: 200 })
records.push(...response.records)
pages = Number(response.pages) || page
page += 1
} while (page <= pages)
return records
}