Compare commits

..

1 Commits
main ... v1.0.2

Author SHA1 Message Date
Christofer Jungberg
b12a47478a 1.0.2 2022-10-25 22:56:16 +02:00
4 changed files with 11 additions and 14 deletions

2
package-lock.json generated
View File

@ -1,5 +1,5 @@
{ {
"name": "strapi-plugin-populate-deep", "name": "strapi-plugin-populate-deep",
"version": "3.0.1", "version": "1.0.2",
"lockfileVersion": 1 "lockfileVersion": 1
} }

View File

@ -1,7 +1,7 @@
{ {
"name": "strapi-plugin-populate-deep", "name": "strapi-plugin-populate-deep",
"version": "3.0.1", "version": "1.0.2",
"description": "Strapi plugin that populates nested content.", "description": "This is the description of the plugin.",
"strapi": { "strapi": {
"name": "strapi-plugin-populate-deep", "name": "strapi-plugin-populate-deep",
"description": "Api helper to populate deep content structures.", "description": "Api helper to populate deep content structures.",
@ -21,7 +21,7 @@
"url": "https://github.com/Barelydead/strapi-plugin-deep-populate" "url": "https://github.com/Barelydead/strapi-plugin-deep-populate"
}, },
"engines": { "engines": {
"node": ">=14.19.1 <=20.x.x", "node": ">=12.x.x <=16.x.x",
"npm": ">=6.0.0" "npm": ">=6.0.0"
}, },
"license": "MIT" "license": "MIT"

2
server/bootstrap.js vendored
View File

@ -10,7 +10,7 @@ module.exports = ({ strapi }) => {
if (populate && populate[0] === 'deep') { if (populate && populate[0] === 'deep') {
const depth = populate[1] ?? defaultDepth const depth = populate[1] ?? defaultDepth
const modelObject = getFullPopulateObject(event.model.uid, depth, []); const modelObject = getFullPopulateObject(event.model.uid, depth);
event.params.populate = modelObject.populate event.params.populate = modelObject.populate
} }
} }

View File

@ -1,5 +1,7 @@
const { isEmpty, merge } = require("lodash/fp"); const { isEmpty, merge } = require("lodash/fp");
const skipCreatorFields = strapi.plugin('strapi-plugin-populate-deep')?.config('skipCreatorFields') || true;
const getModelPopulationAttributes = (model) => { const getModelPopulationAttributes = (model) => {
if (model.uid === "plugin::upload.file") { if (model.uid === "plugin::upload.file") {
const { related, ...attributes } = model.attributes; const { related, ...attributes } = model.attributes;
@ -9,9 +11,7 @@ const getModelPopulationAttributes = (model) => {
return model.attributes; return model.attributes;
}; };
const getFullPopulateObject = (modelUid, maxDepth = 20, ignore) => { const getFullPopulateObject = (modelUid, maxDepth = 20) => {
const skipCreatorFields = strapi.plugin('strapi-plugin-populate-deep')?.config('skipCreatorFields');
if (maxDepth <= 1) { if (maxDepth <= 1) {
return true; return true;
} }
@ -21,11 +21,9 @@ const getFullPopulateObject = (modelUid, maxDepth = 20, ignore) => {
const populate = {}; const populate = {};
const model = strapi.getModel(modelUid); const model = strapi.getModel(modelUid);
if (ignore && !ignore.includes(model.collectionName)) ignore.push(model.collectionName)
for (const [key, value] of Object.entries( for (const [key, value] of Object.entries(
getModelPopulationAttributes(model) getModelPopulationAttributes(model)
)) { )) {
if (ignore?.includes(key)) continue
if (value) { if (value) {
if (value.type === "component") { if (value.type === "component") {
populate[key] = getFullPopulateObject(value.component, maxDepth - 1); populate[key] = getFullPopulateObject(value.component, maxDepth - 1);
@ -38,8 +36,7 @@ const getFullPopulateObject = (modelUid, maxDepth = 20, ignore) => {
} else if (value.type === "relation") { } else if (value.type === "relation") {
const relationPopulate = getFullPopulateObject( const relationPopulate = getFullPopulateObject(
value.target, value.target,
(key === 'localizations') && maxDepth > 2 ? 1 : maxDepth - 1, (key === 'localizations') && maxDepth > 2 ? 1 : maxDepth - 1
ignore
); );
if (relationPopulate) { if (relationPopulate) {
populate[key] = relationPopulate; populate[key] = relationPopulate;