From f30d3cd2c2edd954f5c3ad4cdacc451dc6b07205 Mon Sep 17 00:00:00 2001 From: Kevin Ansfield Date: Thu, 27 Aug 2020 01:52:36 +0100 Subject: [PATCH] Switched to bookshelf count in `getTotalMembers()` no issue - tested performance between knex raw, knex `count()` and bookshelf `count()` and found no difference over 1000 iterations of each (each ~19,500ms +- 500ms for 104k members locally) - switched to using bookshelf as the code is the simplest --- core/server/services/members/limit.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/core/server/services/members/limit.js b/core/server/services/members/limit.js index af82b39560..08859a9caf 100644 --- a/core/server/services/members/limit.js +++ b/core/server/services/members/limit.js @@ -1,13 +1,10 @@ const config = require('../../../shared/config'); -const db = require('../../data/db'); +const models = require('../../models'); const errors = require('@tryghost/errors'); // Get total members direct from DB -// @TODO: determine performance difference between this, normal knex, and using the model layer async function getTotalMembers() { - const isSQLite = config.get('database:client') === 'sqlite3'; - const result = await db.knex.raw('SELECT COUNT(id) AS total FROM members'); - return isSQLite ? result[0].total : result[0][0].total; + return models.Member.count('id'); } module.exports = async () => {