diff --git a/ui/src/lib/server/pocketbase.ts b/ui/src/lib/server/pocketbase.ts index 8dab9d8..a73ef2d 100644 --- a/ui/src/lib/server/pocketbase.ts +++ b/ui/src/lib/server/pocketbase.ts @@ -132,13 +132,28 @@ interface PBList { } async function listAll(collection: string, filter = '', sort = ''): Promise { - const params = new URLSearchParams({ perPage: '500' }); + const perPage = 500; + const params = new URLSearchParams({ perPage: String(perPage), page: '1' }); if (filter) params.set('filter', filter); if (sort) params.set('sort', sort); - const data = await pbGet>( + + const first = await pbGet>( `/api/collections/${collection}/records?${params.toString()}` ); - return data.items ?? []; + const items: T[] = first.items ?? []; + const total = first.totalItems ?? 0; + + // Fetch remaining pages if there are more records than the first page holds. + const totalPages = Math.ceil(total / perPage); + for (let page = 2; page <= totalPages; page++) { + params.set('page', String(page)); + const data = await pbGet>( + `/api/collections/${collection}/records?${params.toString()}` + ); + items.push(...(data.items ?? [])); + } + + return items; } async function listN(collection: string, n: number, filter = '', sort = ''): Promise {