From 10db375825e3b944e791338de5ae61995f38d3dc Mon Sep 17 00:00:00 2001 From: Aurelsicoko Date: Mon, 8 Jan 2018 12:10:48 +0100 Subject: [PATCH] Fix #379 - Support one-way relationship --- packages/strapi-admin/package.json | 2 +- packages/strapi-bookshelf/package.json | 2 +- packages/strapi-knex/package.json | 2 +- packages/strapi-mongoose/lib/index.js | 2 +- .../admin/src/components/EditFormRelations/index.js | 1 + .../strapi-plugin-content-manager/config/queries/bookshelf.js | 4 ++++ .../strapi-plugin-content-manager/config/queries/mongoose.js | 4 ++++ .../controllers/ContentManager.js | 1 - packages/strapi-plugin-content-manager/package.json | 2 +- packages/strapi-plugin-content-type-builder/package.json | 2 +- packages/strapi-plugin-email/package.json | 2 +- packages/strapi-plugin-settings-manager/package.json | 2 +- packages/strapi-plugin-users-permissions/package.json | 2 +- 13 files changed, 18 insertions(+), 10 deletions(-) diff --git a/packages/strapi-admin/package.json b/packages/strapi-admin/package.json index e973d0bbd7..2c986ce6bb 100755 --- a/packages/strapi-admin/package.json +++ b/packages/strapi-admin/package.json @@ -46,4 +46,4 @@ "npm": ">= 3.0.0" }, "license": "MIT" -} \ No newline at end of file +} diff --git a/packages/strapi-bookshelf/package.json b/packages/strapi-bookshelf/package.json index a63c20c03b..48a948fec4 100755 --- a/packages/strapi-bookshelf/package.json +++ b/packages/strapi-bookshelf/package.json @@ -55,4 +55,4 @@ "npm": ">= 5.3.0" }, "license": "MIT" -} \ No newline at end of file +} diff --git a/packages/strapi-knex/package.json b/packages/strapi-knex/package.json index 345e619ff6..2b58627503 100755 --- a/packages/strapi-knex/package.json +++ b/packages/strapi-knex/package.json @@ -46,4 +46,4 @@ "npm": ">= 5.0.0" }, "license": "MIT" -} \ No newline at end of file +} diff --git a/packages/strapi-mongoose/lib/index.js b/packages/strapi-mongoose/lib/index.js index 33f35ee269..31c04e4f69 100755 --- a/packages/strapi-mongoose/lib/index.js +++ b/packages/strapi-mongoose/lib/index.js @@ -251,7 +251,7 @@ module.exports = function (strapi) { const FK = _.find(definition.associations, {alias: name}); const ref = details.plugin ? strapi.plugins[details.plugin].models[details.model].globalId : strapi.models[details.model].globalId; - if (FK && FK.nature !== 'oneToOne' && FK.nature !== 'manyToOne') { + if (FK && FK.nature !== 'oneToOne' && FK.nature !== 'manyToOne' && FK.nature !== 'oneWay') { definition.loadedModel[name] = { type: 'virtual', ref, diff --git a/packages/strapi-plugin-content-manager/admin/src/components/EditFormRelations/index.js b/packages/strapi-plugin-content-manager/admin/src/components/EditFormRelations/index.js index aaa820c25d..9d3bdcffca 100755 --- a/packages/strapi-plugin-content-manager/admin/src/components/EditFormRelations/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/EditFormRelations/index.js @@ -35,6 +35,7 @@ class EditFormRelations extends React.Component { // eslint-disable-line react/p const relations = map(currentSchema.relations, (relation, i) => { switch (relation.nature) { + case 'oneWay': case 'oneToOne': case 'manyToOne': if (relation.dominant) { diff --git a/packages/strapi-plugin-content-manager/config/queries/bookshelf.js b/packages/strapi-plugin-content-manager/config/queries/bookshelf.js index 3aee7e3f79..512b3f32ee 100755 --- a/packages/strapi-plugin-content-manager/config/queries/bookshelf.js +++ b/packages/strapi-plugin-content-manager/config/queries/bookshelf.js @@ -77,6 +77,10 @@ module.exports = { acc[current] = params.values[current]; } else { switch (association.nature) { + case 'oneWay': + acc[current] = _.get(params.values[current], this.primaryKey, params.values[current]) || null; + + break; case 'oneToOne': if (response[current] !== params.values[current]) { const value = _.isNull(params.values[current]) ? response[current] : params.values; diff --git a/packages/strapi-plugin-content-manager/config/queries/mongoose.js b/packages/strapi-plugin-content-manager/config/queries/mongoose.js index 19a12a9767..0735ba5456 100755 --- a/packages/strapi-plugin-content-manager/config/queries/mongoose.js +++ b/packages/strapi-plugin-content-manager/config/queries/mongoose.js @@ -58,6 +58,10 @@ module.exports = { acc[current] = params.values[current]; } else { switch (association.nature) { + case 'oneWay': + acc[current] = _.get(params.values[current], this.primaryKey, params.values[current]) || null; + + break; case 'oneToOne': if (response[current] !== params.values[current]) { const value = _.isNull(params.values[current]) ? response[current] : params.values; diff --git a/packages/strapi-plugin-content-manager/controllers/ContentManager.js b/packages/strapi-plugin-content-manager/controllers/ContentManager.js index 3ee57c5021..df8dbbcb87 100755 --- a/packages/strapi-plugin-content-manager/controllers/ContentManager.js +++ b/packages/strapi-plugin-content-manager/controllers/ContentManager.js @@ -70,7 +70,6 @@ module.exports = { // Create an entry using `queries` system ctx.body = await strapi.plugins['content-manager'].services['contentmanager'].add(ctx.params, ctx.request.body, source); } catch(error) { - console.log(error); ctx.badRequest(null, ctx.request.admin ? [{ messages: [{ id: error.message, field: error.field }] }] : error.message); } }, diff --git a/packages/strapi-plugin-content-manager/package.json b/packages/strapi-plugin-content-manager/package.json index 1eccd60779..5717308e72 100755 --- a/packages/strapi-plugin-content-manager/package.json +++ b/packages/strapi-plugin-content-manager/package.json @@ -48,4 +48,4 @@ "react-select": "^1.0.0-rc.5", "strapi-helper-plugin": "3.0.0-alpha.7.2" } -} \ No newline at end of file +} diff --git a/packages/strapi-plugin-content-type-builder/package.json b/packages/strapi-plugin-content-type-builder/package.json index 7ee701eff2..7e74c76b46 100755 --- a/packages/strapi-plugin-content-type-builder/package.json +++ b/packages/strapi-plugin-content-type-builder/package.json @@ -48,4 +48,4 @@ "npm": ">= 3.0.0" }, "license": "MIT" -} \ No newline at end of file +} diff --git a/packages/strapi-plugin-email/package.json b/packages/strapi-plugin-email/package.json index 231c0e0e97..d7c731aaaa 100644 --- a/packages/strapi-plugin-email/package.json +++ b/packages/strapi-plugin-email/package.json @@ -46,4 +46,4 @@ "npm": ">= 3.0.0" }, "license": "MIT" -} \ No newline at end of file +} diff --git a/packages/strapi-plugin-settings-manager/package.json b/packages/strapi-plugin-settings-manager/package.json index 76207c10b1..78613898b7 100755 --- a/packages/strapi-plugin-settings-manager/package.json +++ b/packages/strapi-plugin-settings-manager/package.json @@ -45,4 +45,4 @@ "npm": ">= 3.0.0" }, "license": "MIT" -} \ No newline at end of file +} diff --git a/packages/strapi-plugin-users-permissions/package.json b/packages/strapi-plugin-users-permissions/package.json index 4cab216ce5..a375e17392 100644 --- a/packages/strapi-plugin-users-permissions/package.json +++ b/packages/strapi-plugin-users-permissions/package.json @@ -48,4 +48,4 @@ "npm": ">= 3.0.0" }, "license": "MIT" -} \ No newline at end of file +}