diff --git a/packages/strapi-plugin-content-manager/controllers/collection-types.js b/packages/strapi-plugin-content-manager/controllers/collection-types.js index e542931f9e..e4ecbecd03 100644 --- a/packages/strapi-plugin-content-manager/controllers/collection-types.js +++ b/packages/strapi-plugin-content-manager/controllers/collection-types.js @@ -22,13 +22,19 @@ module.exports = { return ctx.forbidden(); } - const method = has('_q', query) ? 'search' : 'find'; + const method = has('_q', query) ? 'searchPage' : 'findPage'; const permissionQuery = permissionChecker.buildPermissionQuery(query); - const results = await getService('entity-manager')[method](permissionQuery, model); + const { results, pagination } = await getService('entity-manager')[method]( + permissionQuery, + model + ); - ctx.body = results.map(entity => permissionChecker.sanitizeOutput(entity)); + ctx.body = { + results: results.map(entity => permissionChecker.sanitizeOutput(entity)), + pagination, + }; }, async findOne(ctx) { diff --git a/packages/strapi-plugin-content-manager/oas.yml b/packages/strapi-plugin-content-manager/oas.yml index bdbb0a75ae..7771a36d0b 100644 --- a/packages/strapi-plugin-content-manager/oas.yml +++ b/packages/strapi-plugin-content-manager/oas.yml @@ -322,6 +322,19 @@ paths: tags: - Collection Types content management description: Get a list of entries + responses: + 200: + content: + application/json: + schema: + type: object + properties: + results: + type: array + items: + $ref: '#/components/schemas/entity' + pagination: + $ref: '#/components/schemas/pagination' post: tags: - Collection Types content management @@ -473,6 +486,18 @@ components: - type: string - type: integer + pagination: + type: object + properties: + page: + type: integer + pageSize: + type: integer + pageCount: + type: integer + total: + type: integer + entity: type: object required: diff --git a/packages/strapi-plugin-content-manager/services/entity-manager.js b/packages/strapi-plugin-content-manager/services/entity-manager.js index 97a3c5c0ac..ab4703728a 100644 --- a/packages/strapi-plugin-content-manager/services/entity-manager.js +++ b/packages/strapi-plugin-content-manager/services/entity-manager.js @@ -48,10 +48,18 @@ module.exports = { return strapi.entityService.find({ params }, { model }); }, + findPage(params, model) { + return strapi.entityService.findPage({ params }, { model }); + }, + search(params, model) { return strapi.entityService.search({ params }, { model }); }, + searchPage(params, model) { + return strapi.entityService.searchPage({ params }, { model }); + }, + count(params, model) { return strapi.entityService.count({ params }, { model }); }, diff --git a/packages/strapi/lib/services/entity-service.js b/packages/strapi/lib/services/entity-service.js index b98da96d0e..907b8fbf89 100644 --- a/packages/strapi/lib/services/entity-service.js +++ b/packages/strapi/lib/services/entity-service.js @@ -33,6 +33,10 @@ module.exports = ({ db, eventHub, entityValidator }) => ({ return db.query(model).find(params, populate); }, + findPage({ params, populate }, { model }) { + return db.query(model).findPage(params, populate); + }, + /** * Promise to fetch record * @@ -148,6 +152,10 @@ module.exports = ({ db, eventHub, entityValidator }) => ({ return db.query(model).search(params); }, + searchPage({ params }, { model }) { + return db.query(model).searchPage(params); + }, + /** * Promise to count searched records *