diff --git a/packages/strapi-connector-bookshelf/lib/build-database-schema.js b/packages/strapi-connector-bookshelf/lib/build-database-schema.js index 9f727713ce..ef9e8dfe86 100644 --- a/packages/strapi-connector-bookshelf/lib/build-database-schema.js +++ b/packages/strapi-connector-bookshelf/lib/build-database-schema.js @@ -4,7 +4,11 @@ const _ = require('lodash'); const { singular } = require('pluralize'); const { contentTypes: contentTypesUtils } = require('strapi-utils'); -const { storeDefinition, getColumnsWhereDefinitionChanged } = require('./utils/store-definition'); +const { + getDefinitionFromStore, + storeDefinition, + getColumnsWhereDefinitionChanged, +} = require('./utils/store-definition'); const { getManyRelations } = require('./utils/associations'); const migrateSchemas = async ({ ORM, loadedModel, definition, connection, model }, context) => { @@ -397,10 +401,14 @@ const createOrUpdateTable = async ({ table, attributes, definition, ORM, model } }; module.exports = async ({ ORM, loadedModel, definition, connection, model }) => { + const previousDefinitionRow = await getDefinitionFromStore(definition, ORM); + const previousDefinition = JSON.parse(_.get(previousDefinitionRow, 'value', null)); + // run migrations await strapi.db.migrations.run(migrateSchemas, { ORM, loadedModel, + previousDefinition, definition, connection, model, diff --git a/packages/strapi-connector-bookshelf/lib/migrations/draft-publish.js b/packages/strapi-connector-bookshelf/lib/migrations/draft-publish.js index 39e52449ad..6781a0aeea 100644 --- a/packages/strapi-connector-bookshelf/lib/migrations/draft-publish.js +++ b/packages/strapi-connector-bookshelf/lib/migrations/draft-publish.js @@ -4,12 +4,9 @@ const _ = require('lodash'); const { contentTypes: contentTypesUtils } = require('strapi-utils'); const { PUBLISHED_AT_ATTRIBUTE } = contentTypesUtils.constants; -const { getDefinitionFromStore } = require('../utils/store-definition'); -const getDraftAndPublishMigrationWay = async ({ definition, ORM }) => { - const previousDefRow = await getDefinitionFromStore(definition, ORM); - const previousDef = JSON.parse(_.get(previousDefRow, 'value', null)); - const previousDraftAndPublish = contentTypesUtils.hasDraftAndPublish(previousDef); +const getDraftAndPublishMigrationWay = async ({ definition, previousDefinition }) => { + const previousDraftAndPublish = contentTypesUtils.hasDraftAndPublish(previousDefinition); const actualDraftAndPublish = contentTypesUtils.hasDraftAndPublish(definition); if (previousDraftAndPublish === actualDraftAndPublish) { @@ -23,8 +20,8 @@ const getDraftAndPublishMigrationWay = async ({ definition, ORM }) => { } }; -const before = async ({ definition, ORM }, context) => { - const way = await getDraftAndPublishMigrationWay({ definition, ORM }); +const before = async ({ definition, previousDefinition, ORM }, context) => { + const way = await getDraftAndPublishMigrationWay({ definition, previousDefinition }); if (way === 'disable') { const publishedAtColumnExists = await ORM.knex.schema.hasColumn( @@ -50,8 +47,8 @@ const before = async ({ definition, ORM }, context) => { } }; -const after = async ({ definition, ORM }) => { - const way = await getDraftAndPublishMigrationWay({ definition, ORM }); +const after = async ({ definition, previousDefinition, ORM }) => { + const way = await getDraftAndPublishMigrationWay({ definition, previousDefinition }); if (way === 'enable') { const now = new Date(); diff --git a/packages/strapi-connector-mongoose/lib/migrations/draft-publish.js b/packages/strapi-connector-mongoose/lib/migrations/draft-publish.js index 139823c76c..2b3ea17bcb 100644 --- a/packages/strapi-connector-mongoose/lib/migrations/draft-publish.js +++ b/packages/strapi-connector-mongoose/lib/migrations/draft-publish.js @@ -4,15 +4,12 @@ const _ = require('lodash'); const { contentTypes: contentTypesUtils } = require('strapi-utils'); const { PUBLISHED_AT_ATTRIBUTE } = contentTypesUtils.constants; -const { getDefinitionFromStore } = require('../utils/store-definition'); -const getDraftAndPublishMigrationWay = async (definition, ORM) => { - const previousDefRow = await getDefinitionFromStore(definition, ORM); - const previousDef = JSON.parse(_.get(previousDefRow, 'value', null)); - const previousDraftAndPublish = contentTypesUtils.hasDraftAndPublish(previousDef); +const getDraftAndPublishMigrationWay = async ({ definition, previousDefinition }) => { + const previousDraftAndPublish = contentTypesUtils.hasDraftAndPublish(previousDefinition); const actualDraftAndPublish = contentTypesUtils.hasDraftAndPublish(definition); - if (!previousDefRow || previousDraftAndPublish === actualDraftAndPublish) { + if (!previousDefinition || previousDraftAndPublish === actualDraftAndPublish) { return 'none'; } if (!previousDraftAndPublish && actualDraftAndPublish) { @@ -23,8 +20,8 @@ const getDraftAndPublishMigrationWay = async (definition, ORM) => { } }; -const migrateDraftAndPublish = async ({ definition, model, ORM }) => { - let way = await getDraftAndPublishMigrationWay(definition, ORM); +const migrateDraftAndPublish = async ({ definition, previousDefinition, model }) => { + let way = await getDraftAndPublishMigrationWay({ definition, previousDefinition }); if (way === 'enable') { const createdAtCol = _.get(definition, 'timestamps.createdAt', 'createdAt'); diff --git a/packages/strapi-connector-mongoose/lib/mount-models.js b/packages/strapi-connector-mongoose/lib/mount-models.js index 9a9222f650..0b11dbc1a9 100644 --- a/packages/strapi-connector-mongoose/lib/mount-models.js +++ b/packages/strapi-connector-mongoose/lib/mount-models.js @@ -8,7 +8,11 @@ const utils = require('./utils'); const populateQueries = require('./utils/populate-queries'); const relations = require('./relations'); const { findComponentByGlobalId } = require('./utils/helpers'); -const { didDefinitionChange, storeDefinition } = require('./utils/store-definition'); +const { + didDefinitionChange, + storeDefinition, + getDefinitionFromStore, +} = require('./utils/store-definition'); const { PUBLISHED_AT_ATTRIBUTE, @@ -342,9 +346,13 @@ module.exports = async ({ models, target }, ctx) => { const modelInstance = target[model]; const definitionDidChange = await didDefinitionChange(definition, instance); + const previousDefinitionRow = await getDefinitionFromStore(definition, instance); + const previousDefinition = JSON.parse(_.get(previousDefinitionRow, 'value', null)); + // run migrations await strapi.db.migrations.run(migrateSchema, { definition, + previousDefinition, model: modelInstance, ORM: instance, }); diff --git a/packages/strapi-plugin-i18n/config/functions/migrations/disable-localization-field.js b/packages/strapi-plugin-i18n/config/functions/migrations/disable-localization-field.js new file mode 100644 index 0000000000..9814939433 --- /dev/null +++ b/packages/strapi-plugin-i18n/config/functions/migrations/disable-localization-field.js @@ -0,0 +1,10 @@ +'use strict'; +// +// const before = ({ definition, ORM }) => { +// const previousDefRow = await getDefinitionFromStore(definition, ORM); +// +// }; +// +// module.exports = { +// before, +// };