actual/packages/loot-core/src/server/db/util.js
2022-04-28 22:44:38 -04:00

33 lines
790 B
JavaScript

export async function incrFetch(
runQuery,
terms,
compare,
makeQuery,
params = []
) {
let pageCount = 500;
let results = [];
let fetchedIds = new Set();
for (let i = 0; i < terms.length; i += pageCount) {
let slice = terms.slice(i, i + pageCount).filter(id => !fetchedIds.has(id));
if (slice.length > 0) {
let filter = slice.map(id => compare(id)).join(' OR ');
let query = makeQuery('(' + filter + ')');
let rows = await runQuery(query, params, true);
fetchedIds = new Set([...fetchedIds, ...slice]);
results = results.concat(rows);
}
}
return results;
}
export function whereIn(ids, field) {
let ids2 = [...new Set(ids)];
let filter = `${field} IN (` + ids2.map(id => `'${id}'`).join(',') + ')';
return filter;
}