From d5cca4027035e8cb2b48833891963493bf3252a7 Mon Sep 17 00:00:00 2001 From: Okaris Date: Fri, 1 Jun 2018 08:10:25 +0300 Subject: [PATCH] Added count to api template for bookshelf --- .../templates/bookshelf/controller.template | 10 ++++++++ .../templates/bookshelf/service.template | 23 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/packages/strapi-generate-api/templates/bookshelf/controller.template b/packages/strapi-generate-api/templates/bookshelf/controller.template index 3a47e4138d..60ce25ca15 100755 --- a/packages/strapi-generate-api/templates/bookshelf/controller.template +++ b/packages/strapi-generate-api/templates/bookshelf/controller.template @@ -28,6 +28,16 @@ module.exports = { return strapi.services.<%= id %>.fetch(ctx.params); }, + /** + * Count <%= id %> records. + * + * @return {Number} + */ + + count: async (ctx) => { + return strapi.services.<%= id %>.count(ctx.query); + }, + /** * Create a/an <%= id %> record. * diff --git a/packages/strapi-generate-api/templates/bookshelf/service.template b/packages/strapi-generate-api/templates/bookshelf/service.template index f91f26c8d4..632c895957 100755 --- a/packages/strapi-generate-api/templates/bookshelf/service.template +++ b/packages/strapi-generate-api/templates/bookshelf/service.template @@ -67,6 +67,29 @@ module.exports = { }); }, + /** + * Promise to count a/an <%= id %>. + * + * @return {Promise} + */ + + count: (params) => { + // Convert `params` object to filters compatible with Bookshelf. + const filters = strapi.utils.models.convertParams('<%= globalID.toLowerCase() %>', params); + + return <%= globalID %>.query(function(qb) { + _.forEach(filters.where, (where, key) => { + if (_.isArray(where.value)) { + for (const value in where.value) { + qb[value ? 'where' : 'orWhere'](key, where.symbol, where.value[value]) + } + } else { + qb.where(key, where.symbol, where.value); + } + }); + }).count(); + }, + /** * Promise to add a/an <%= id %>. *