From e8c92fc3d7722b6d1caf9a194616877320321eab Mon Sep 17 00:00:00 2001 From: Kamal Bennani Date: Sat, 2 Feb 2019 13:19:05 +0100 Subject: [PATCH] Adapt Services to the new Mongoose API --- .../templates/mongoose/controller.template | 4 +-- .../templates/mongoose/service.template | 33 +++++++------------ .../config/queries/mongoose.js | 26 ++++++++------- .../config/queries/mongoose.js | 27 ++++++++------- .../config/queries/mongoose.js | 27 ++++++++------- .../config/queries/mongoose.js | 28 +++++++++------- 6 files changed, 77 insertions(+), 68 deletions(-) diff --git a/packages/strapi-generate-api/templates/mongoose/controller.template b/packages/strapi-generate-api/templates/mongoose/controller.template index c53e7c8fb1..2a043a9eb6 100644 --- a/packages/strapi-generate-api/templates/mongoose/controller.template +++ b/packages/strapi-generate-api/templates/mongoose/controller.template @@ -14,11 +14,11 @@ module.exports = { * @return {Object|Array} */ - find: async (ctx) => { + find: async (ctx, next, { populate } = {}) => { if (ctx.query._q) { return strapi.services.<%= id %>.search(ctx.query); } else { - return strapi.services.<%= id %>.fetchAll(ctx.query); + return strapi.services.<%= id %>.fetchAll(ctx.query, populate); } }, diff --git a/packages/strapi-generate-api/templates/mongoose/service.template b/packages/strapi-generate-api/templates/mongoose/service.template index b664c76140..6f2a791853 100644 --- a/packages/strapi-generate-api/templates/mongoose/service.template +++ b/packages/strapi-generate-api/templates/mongoose/service.template @@ -8,6 +8,7 @@ // Public dependencies. const _ = require('lodash'); +const { Builder, Query } = require('strapi-utils'); module.exports = { @@ -17,22 +18,13 @@ module.exports = { * @return {Promise} */ - fetchAll: (params) => { - // Convert `params` object to filters compatible with Mongo. - const filters = strapi.utils.models.convertParams('<%= globalID.toLowerCase() %>', params); - // Select field to populate. - const populate = <%= globalID %>.associations - .filter(ast => ast.autoPopulate !== false) - .map(ast => ast.alias) - .join(' '); + fetchAll: (params, populate) => { + const filter = new Builder(<%= globalID %>, params).convert(); - return <%= globalID %> - .find() - .where(filters.where) - .sort(filters.sort) - .skip(filters.start) - .limit(filters.limit) - .populate(filters.populate || populate); + return new Query(<%= globalID %>) + .find(filter) + .populate(populate) + .execute(); }, /** @@ -60,12 +52,11 @@ module.exports = { */ count: (params) => { - // Convert `params` object to filters compatible with Mongo. - const filters = strapi.utils.models.convertParams('<%= globalID.toLowerCase() %>', params); - - return <%= globalID %> - .countDocuments() - .where(filters.where); + // Convert `params` object to filter compatible with Mongo. + const filter = new Builder(<%= globalID %>, params).convert(); + return new Query(<%= globalID %>) + .count(filter) + .execute(); }, /** diff --git a/packages/strapi-plugin-content-manager/config/queries/mongoose.js b/packages/strapi-plugin-content-manager/config/queries/mongoose.js index f8099f6cef..1282cdcc9b 100644 --- a/packages/strapi-plugin-content-manager/config/queries/mongoose.js +++ b/packages/strapi-plugin-content-manager/config/queries/mongoose.js @@ -1,21 +1,25 @@ const _ = require('lodash'); +const { Builder, Query } = require('strapi-utils'); module.exports = { - find: async function (params, populate, raw = false) { - const query = this - .find(params.where) - .limit(Number(params.limit)) - .sort(params.sort) - .skip(Number(params.skip)) - .populate(populate || this.associations.map(x => x.alias).join(' ')); + find: async function (params, populate) { + const model = this; + // Convert `params` object to filter compatible with Mongo. + const filter = new Builder(model, params).convert(); - return raw ? query.lean() : query; + return new Query(model) + .find(filter) + .populate(populate) + .execute(); }, count: async function (params) { - return Number(await this - .where(params.where) - .countDocuments()); + const model = this; + // Convert `params` object to filter compatible with Mongo. + const filter = new Builder(model, params).convert(); + return new Query(model) + .count(filter) + .execute(); }, search: async function (params, populate) { // eslint-disable-line no-unused-vars diff --git a/packages/strapi-plugin-email/config/queries/mongoose.js b/packages/strapi-plugin-email/config/queries/mongoose.js index 620cd2cf1b..81f67d12c5 100644 --- a/packages/strapi-plugin-email/config/queries/mongoose.js +++ b/packages/strapi-plugin-email/config/queries/mongoose.js @@ -1,19 +1,24 @@ const _ = require('lodash'); +const { Builder, Query } = require('strapi-utils'); module.exports = { - find: async function (params = {}, populate) { - return this - .find(params.where) - .limit(Number(params.limit)) - .sort(params.sort) - .skip(Number(params.start)) - .populate(populate || this.associations.map(x => x.alias).join(' ')) - .lean(); + find: async function (params, populate) { + const model = this; + const filter = new Builder(model, params).convert(); + + return new Query(model) + .find(filter) + .populate(populate) + .execute(); }, - count: async function (params = {}) { - return Number(await this - .countDocuments(params)); + count: async function (params) { + const model = this; + // Convert `params` object to filter compatible with Mongo. + const filter = new Builder(model, params).convert(); + return new Query(model) + .count(filter) + .execute(); }, findOne: async function (params, populate) { diff --git a/packages/strapi-plugin-upload/config/queries/mongoose.js b/packages/strapi-plugin-upload/config/queries/mongoose.js index 003d54269a..304863ec7e 100644 --- a/packages/strapi-plugin-upload/config/queries/mongoose.js +++ b/packages/strapi-plugin-upload/config/queries/mongoose.js @@ -1,19 +1,24 @@ const _ = require('lodash'); +const { Builder, Query } = require('strapi-utils'); module.exports = { - find: async function (params = {}, populate) { - return this - .find(params.where) - .limit(Number(params.limit)) - .sort(params.sort) - .skip(Number(params.start)) - .populate(populate || this.associations.map(x => x.alias).join(' ')) - .lean(); + find: async function (params, populate) { + const model = this; + const filter = new Builder(model, params).convert(); + + return new Query(model) + .find(filter) + .populate(populate) + .execute(); }, - count: async function (params = {}) { - return Number(await this - .countDocuments(params)); + count: async function (params) { + const model = this; + // Convert `params` object to filter compatible with Mongo. + const filter = new Builder(model, params).convert(); + return new Query(model) + .count(filter) + .execute(); }, findOne: async function (params, populate) { diff --git a/packages/strapi-plugin-users-permissions/config/queries/mongoose.js b/packages/strapi-plugin-users-permissions/config/queries/mongoose.js index 2d28c570fe..c6266d4c84 100644 --- a/packages/strapi-plugin-users-permissions/config/queries/mongoose.js +++ b/packages/strapi-plugin-users-permissions/config/queries/mongoose.js @@ -1,20 +1,24 @@ const _ = require('lodash'); +const { Builder, Query } = require('strapi-utils'); module.exports = { - find: async function (params = {}, populate) { - return this - .find(params.where) - .limit(Number(params.limit)) - .sort(params.sort) - .skip(Number(params.skip)) - .populate(populate || this.associations.map(x => x.alias).join(' ')) - .lean(); + find: async function (params, populate) { + const model = this; + const filter = new Builder(model, params).convert(); + + return new Query(model) + .find(filter) + .populate(populate) + .execute(); }, - count: async function (params = {where: {}}) { - return Number(await this - .countDocuments() - .where(params.where)); + count: async function (params) { + const model = this; + // Convert `params` object to filter compatible with Mongo. + const filter = new Builder(model, params).convert(); + return new Query(model) + .count(filter) + .execute(); }, findOne: async function (params, populate) {