mirror of
https://github.com/strapi/strapi.git
synced 2025-07-25 18:05:07 +00:00
41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
const { objectType, nonNull } = require('nexus');
|
|
const { defaultTo, prop, pipe } = require('lodash/fp');
|
|
|
|
module.exports = ({ strapi }) => {
|
|
const { naming } = strapi.plugin('graphql').service('utils');
|
|
const { RESPONSE_COLLECTION_META_TYPE_NAME } = strapi.plugin('graphql').service('constants');
|
|
|
|
return {
|
|
/**
|
|
* Build a type definition for a content API collection response for a given content type
|
|
* @param {object} contentType The content type which will be used to build its content API response definition
|
|
* @return {NexusObjectTypeDef}
|
|
*/
|
|
buildResponseCollectionDefinition(contentType) {
|
|
const name = naming.getEntityResponseCollectionName(contentType);
|
|
const entityName = naming.getEntityName(contentType);
|
|
|
|
return objectType({
|
|
name,
|
|
|
|
definition(t) {
|
|
t.nonNull.list.field('data', {
|
|
type: nonNull(entityName),
|
|
|
|
resolve: pipe(prop('nodes'), defaultTo([])),
|
|
});
|
|
|
|
t.nonNull.field('meta', {
|
|
type: RESPONSE_COLLECTION_META_TYPE_NAME,
|
|
|
|
// Pass down the args stored in the source object
|
|
resolve: prop('info'),
|
|
});
|
|
},
|
|
});
|
|
},
|
|
};
|
|
};
|