Skip to content

Commit 00a2c4a

Browse files
authored
Merge pull request #28 from boazpoolman/feature/no-limit
feat: Itterate through findMany queries limited with 100
2 parents 776eda5 + 3644a03 commit 00a2c4a

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

server/config/type.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { logMessage, sanitizeConfig, dynamicSort } = require('../utils');
1+
const { logMessage, sanitizeConfig, dynamicSort, noLimit } = require('../utils');
22
const difference = require('../utils/getArrayDiff');
33

44
const ConfigType = class ConfigType {
@@ -40,7 +40,7 @@ const ConfigType = class ConfigType {
4040
});
4141

4242
await Promise.all(this.relations.map(async ({ queryString, parentName }) => {
43-
const relations = await strapi.query(queryString).findMany({
43+
const relations = await noLimit(strapi.query(queryString), {
4444
where: {
4545
[parentName]: entity.id,
4646
},
@@ -146,7 +146,7 @@ const ConfigType = class ConfigType {
146146
* @returns {object} Object with key value pairs of configs.
147147
*/
148148
getAllFromDatabase = async () => {
149-
const AllConfig = await strapi.query(this.queryString).findMany({ limit: 0 });
149+
const AllConfig = await noLimit(strapi.query(this.queryString), {});
150150
const configs = {};
151151

152152
await Promise.all(Object.values(AllConfig).map(async (config) => {
@@ -156,7 +156,7 @@ const ConfigType = class ConfigType {
156156

157157
const formattedConfig = { ...sanitizeConfig(config) };
158158
await Promise.all(this.relations.map(async ({ queryString, relationName, relationSortField, parentName }) => {
159-
const relations = await strapi.query(queryString).findMany({
159+
const relations = await noLimit(strapi.query(queryString), {
160160
where: { [parentName]: { [this.uid]: config[this.uid] } },
161161
});
162162

server/utils/index.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,29 @@ const sanitizeConfig = (config, relation, relationSortField) => {
6565
return config;
6666
};
6767

68+
const noLimit = async (query, parameters, limit = 100) => {
69+
let entries = [];
70+
const amountOfEntries = await query.count(parameters);
71+
72+
for (let i = 0; i < (amountOfEntries / limit); i++) {
73+
/* eslint-disable-next-line */
74+
const chunk = await query.findMany({
75+
...parameters,
76+
limit: limit,
77+
offset: (i * limit),
78+
});
79+
entries = [...chunk, ...entries];
80+
}
81+
82+
return entries;
83+
};
84+
6885
module.exports = {
6986
getService,
7087
getCoreStore,
7188
logMessage,
7289
sanitizeConfig,
7390
sortByKeys,
7491
dynamicSort,
92+
noLimit,
7593
};

0 commit comments

Comments
 (0)