UNPKG

@reactionable/amplify

Version:
40 lines 1.23 kB
import { query as amplifyQuery, } from "../query/Query"; export async function queryList(options) { return fetchListData([], options); } async function fetchListData(items, options) { const result = await amplifyQuery({ ...options, rawData: true, }); const data = extractListData(result); items.push(...data.items); // Aws do not apply filters before applying limit const limit = options?.variables?.limit; const limitNotReached = limit && items.length - 1 < limit; const shouldFetchMore = data.nextToken && (options.queryAll || limitNotReached); if (!shouldFetchMore) { return { ...data, items }; } return fetchListData(items, { ...options, // Set next token variable variables: Object.assign(options.variables || {}, { nextToken: data.nextToken, }), }); } function extractListData(result) { let data = result; while (!isAmplifyListType(data)) { if (!data) { throw new Error("No data"); } data = data[Object.keys(data)[0]]; } return data; } function isAmplifyListType(data) { return Array.isArray(data?.items); } //# sourceMappingURL=QueryList.js.map