From 2f2fe16944b0b5a3781c91b0ba2686898449c631 Mon Sep 17 00:00:00 2001 From: Naz Date: Wed, 18 Aug 2021 18:39:43 +0400 Subject: [PATCH] Added floating threshold to member import closes https://github.com/TryGhost/Team/issues/958 - The change allows to dynamically adjust import threshold based on current member count --- core/server/services/members/service.js | 16 +++++++++++++--- package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/core/server/services/members/service.js b/core/server/services/members/service.js index 9d16519cb5..a1c4fb5374 100644 --- a/core/server/services/members/service.js +++ b/core/server/services/members/service.js @@ -52,8 +52,18 @@ function reconfigureMembersAPI() { }); } -const getThreshold = () => { - return _.get(config.get('hostSettings'), 'emailVerification.importThreshold'); +/** + * @description Calculates threshold based on following formula + * Threshold = max{[current number of members], [volume threshold]} + * + * @returns {Promise} + */ +const fetchImportThreshold = async () => { + const membersTotal = await membersService.stats.getTotalMembers(); + const volumeThreshold = _.get(config.get('hostSettings'), 'emailVerification.importThreshold') || Infinity; + const threshold = Math.max(membersTotal, volumeThreshold); + + return threshold; }; const membersImporter = new MembersCSVImporter({ @@ -65,7 +75,7 @@ const membersImporter = new MembersCSVImporter({ addJob: jobsService.addJob.bind(jobsService), knex: db.knex, urlFor: urlUtils.urlFor.bind(urlUtils), - importThreshold: getThreshold() + fetchThreshold: fetchImportThreshold }); const startEmailVerification = async (importedNumber) => { diff --git a/package.json b/package.json index d75c5c5f76..94f0e425ed 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "@tryghost/magic-link": "1.0.8", "@tryghost/members-api": "1.24.1", "@tryghost/members-csv": "1.1.3", - "@tryghost/members-importer": "0.1.2", + "@tryghost/members-importer": "0.2.0", "@tryghost/members-ssr": "1.0.9", "@tryghost/mw-session-from-token": "0.1.22", "@tryghost/package-json": "1.0.2", diff --git a/yarn.lock b/yarn.lock index d5c31b04ab..393447fe31 100644 --- a/yarn.lock +++ b/yarn.lock @@ -931,10 +931,10 @@ papaparse "5.3.1" pump "^3.0.0" -"@tryghost/members-importer@0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@tryghost/members-importer/-/members-importer-0.1.2.tgz#6298fa9eff6d4a536b7c8229ad5e2bff54db92cd" - integrity sha512-nLGVctLvt7NtqkodKztdb1smTR3FmVPgfrCrEFGZbZR5Au79a0lsjKgebLFH6D7D1dWOu/hHLSY4n3Vh93Hq0Q== +"@tryghost/members-importer@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@tryghost/members-importer/-/members-importer-0.2.0.tgz#90b8829a951685773ec36ef4aaf66b76aefe0367" + integrity sha512-7iLkvP1XItjUBeyP7e+rVxmeQQHv404ZPMknMPofnfksmYJ3Izz13e958D5poWLJgTdl08LAvYub0NfKaNFvGA== dependencies: "@tryghost/errors" "^0.2.13" "@tryghost/members-csv" "^1.1.3"