diff --git a/packages/core/admin/ee/server/bootstrap.js b/packages/core/admin/ee/server/bootstrap.js index 4bfe0666e1..1040a410a4 100644 --- a/packages/core/admin/ee/server/bootstrap.js +++ b/packages/core/admin/ee/server/bootstrap.js @@ -25,11 +25,16 @@ const SSO_ACTIONS = [ ]; module.exports = async () => { - const { actionProvider } = getService('permission'); - if (features.isEnabled('sso')) { + const { actionProvider } = getService('permission'); await actionProvider.registerMany(SSO_ACTIONS); } + if (features.isEnabled('review-workflows')) { + const { bootstrap: rwBootstrap } = getService('review-workflows'); + + await rwBootstrap(); + } + await executeCEBootstrap(); }; diff --git a/packages/core/admin/ee/server/constants/default-stages.json b/packages/core/admin/ee/server/constants/default-stages.json new file mode 100644 index 0000000000..79a88659b6 --- /dev/null +++ b/packages/core/admin/ee/server/constants/default-stages.json @@ -0,0 +1,11 @@ +[ + { + "name": "To do" + }, + { + "name": "In progress" + }, + { + "name": "Done" + } +] diff --git a/packages/core/admin/ee/server/constants/default-workflow.json b/packages/core/admin/ee/server/constants/default-workflow.json new file mode 100644 index 0000000000..82449ee278 --- /dev/null +++ b/packages/core/admin/ee/server/constants/default-workflow.json @@ -0,0 +1,3 @@ +{ + "uid": "cjld2cjxh0000qzrmn831i7rn" +} \ No newline at end of file diff --git a/packages/core/admin/ee/server/services/index.js b/packages/core/admin/ee/server/services/index.js index 76e0839ac7..9447a3c564 100644 --- a/packages/core/admin/ee/server/services/index.js +++ b/packages/core/admin/ee/server/services/index.js @@ -5,4 +5,5 @@ module.exports = { role: require('./role'), workflows: require('./review-workflows/workflows'), stages: require('./review-workflows/stages'), + 'review-workflows': require('./review-workflows/review-workflows'), }; diff --git a/packages/core/admin/ee/server/services/review-workflows/review-workflows.js b/packages/core/admin/ee/server/services/review-workflows/review-workflows.js new file mode 100644 index 0000000000..fee3b4b95e --- /dev/null +++ b/packages/core/admin/ee/server/services/review-workflows/review-workflows.js @@ -0,0 +1,48 @@ +'use strict'; + +const { WORKFLOW_MODEL_UID, STAGE_MODEL_UID } = require('../../constants/workflows'); + +module.exports = ({ strapi }) => ({ + async bootstrap() { + const wfCount = await strapi.entityService.count(WORKFLOW_MODEL_UID); + const stagesCount = await strapi.entityService.count(STAGE_MODEL_UID); + + if (wfCount + stagesCount === 0) { + const defaultStages = require('../../constants/default-stages.json'); + const defaultWorkflow = require('../../constants/default-workflow.json'); + + await strapi.query('admin::workflow-stage').createMany({ data: defaultStages }); + + const stages = await strapi + .query('admin::workflow-stage') + .findMany({ limit: 3, select: ['id'] }); + + const workflow = { + ...defaultWorkflow, + stages: { + connect: [ + { + id: stages[0].id, + position: { + start: true, + }, + }, + { + id: stages[1].id, + position: { + after: stages[0].id, + }, + }, + { + id: stages[2].id, + position: { + after: stages[1].id, + }, + }, + ], + }, + }; + await strapi.query('admin::workflow').create({ data: workflow }); + } + }, +});