29 lines
676 B
TypeScript
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
|
|
}
|