Merge pull request #28 from boazpoolman/feature/no-limit

feat: Itterate through findMany queries limited with 100
pull/29/head
Boaz Poolman 2021-12-08 14:03:32 +01:00 committed by GitHub
commit 00a2c4af34
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 4 deletions

View File

@ -1,4 +1,4 @@
const { logMessage, sanitizeConfig, dynamicSort } = require('../utils');
const { logMessage, sanitizeConfig, dynamicSort, noLimit } = require('../utils');
const difference = require('../utils/getArrayDiff');
const ConfigType = class ConfigType {
@ -40,7 +40,7 @@ const ConfigType = class ConfigType {
});
await Promise.all(this.relations.map(async ({ queryString, parentName }) => {
const relations = await strapi.query(queryString).findMany({
const relations = await noLimit(strapi.query(queryString), {
where: {
[parentName]: entity.id,
},
@ -146,7 +146,7 @@ const ConfigType = class ConfigType {
* @returns {object} Object with key value pairs of configs.
*/
getAllFromDatabase = async () => {
const AllConfig = await strapi.query(this.queryString).findMany({ limit: 0 });
const AllConfig = await noLimit(strapi.query(this.queryString), {});
const configs = {};
await Promise.all(Object.values(AllConfig).map(async (config) => {
@ -156,7 +156,7 @@ const ConfigType = class ConfigType {
const formattedConfig = { ...sanitizeConfig(config) };
await Promise.all(this.relations.map(async ({ queryString, relationName, relationSortField, parentName }) => {
const relations = await strapi.query(queryString).findMany({
const relations = await noLimit(strapi.query(queryString), {
where: { [parentName]: { [this.uid]: config[this.uid] } },
});

View File

@ -65,6 +65,23 @@ const sanitizeConfig = (config, relation, relationSortField) => {
return config;
};
const noLimit = async (query, parameters, limit = 100) => {
let entries = [];
const amountOfEntries = await query.count(parameters);
for (let i = 0; i < (amountOfEntries / limit); i++) {
/* eslint-disable-next-line */
const chunk = await query.findMany({
...parameters,
limit: limit,
offset: (i * limit),
});
entries = [...chunk, ...entries];
}
return entries;
};
module.exports = {
getService,
getCoreStore,
@ -72,4 +89,5 @@ module.exports = {
sanitizeConfig,
sortByKeys,
dynamicSort,
noLimit,
};