model.js 820 B

12345678910111213141516171819202122232425262728293031323334
  1. export function model() {
  2. return globalThis.dataModel;
  3. }
  4. export async function getAll({ filter, select, name }) {
  5. const addSelect = (prop) => (select ? { ...prop, select } : prop);
  6. const pageSize = 200;
  7. const first = await model()[name].list(
  8. addSelect({
  9. pageNumber: 1,
  10. pageSize,
  11. getCount: true,
  12. filter,
  13. }),
  14. );
  15. const {
  16. data: { total },
  17. } = first;
  18. const totalPage = Math.ceil(total / 200);
  19. const lists = await Promise.all(
  20. Array.from({ length: totalPage - 1 }, (_, index) => index + 2).map((pageNumber) =>
  21. model()[name].list(
  22. addSelect({
  23. pageNumber,
  24. pageSize,
  25. filter,
  26. }),
  27. ),
  28. ),
  29. );
  30. const ret = lists.reduce((acc, current) => acc.concat(current.data.records), first.data.records);
  31. return ret;
  32. }