From e9c304078649eadbcb075d20d44f1722cc5bcec3 Mon Sep 17 00:00:00 2001 From: Fabien O'Carroll Date: Tue, 29 Jan 2019 15:41:04 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=A1Reverted=20"empty-string=20to=20NUL?= =?UTF-8?q?L"=20db=20migration=20(#10430)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no-issue - revert the migration because migrations that (potentially) touch every row should be kept to major releases where possible - the migration was safe to run and won't cause any problems for anyone who has already upgraded - reversion keeps the migration file but changes the contents to a no-op so that `migrations` table state is the same for all users whether they migrated with the full migration or the no-op version --- .../versions/2.13/1-remove-empty-strings.js | 80 +------------------ 1 file changed, 2 insertions(+), 78 deletions(-) diff --git a/core/server/data/migrations/versions/2.13/1-remove-empty-strings.js b/core/server/data/migrations/versions/2.13/1-remove-empty-strings.js index eddaa2d2bc..91088c0b7a 100644 --- a/core/server/data/migrations/versions/2.13/1-remove-empty-strings.js +++ b/core/server/data/migrations/versions/2.13/1-remove-empty-strings.js @@ -1,81 +1,5 @@ const Promise = require('bluebird'); -const common = require('../../../../lib/common'); -const schema = require('../../../schema'); -/* - * [{ - * tableName: 'posts', - * columns: ['custom_excerpt', 'description', 'etc...'] - * }] - * */ -const tablesToUpdate = Object.keys(schema.tables).reduce((tablesToUpdate, tableName) => { - const table = schema.tables[tableName]; - const columns = Object.keys(table).filter((columnName) => { - const column = table[columnName]; - return column.nullable && ['string', 'text'].includes(column.type); - }); - if (!columns.length) { - return tablesToUpdate; - } - return tablesToUpdate.concat({ - tableName, - columns - }); -}, []); +module.exports.up = () => Promise.resolve(); -const createReplace = (connection, from, to) => (tableName, columnName) => { - return connection.schema.hasTable(tableName) - .then((tableExists) => { - if (!tableExists) { - common.logging.warn( - `Table ${tableName} does not exist` - ); - return; - } - return connection.schema.hasColumn(tableName, columnName) - .then((columnExists) => { - if (!columnExists) { - common.logging.warn( - `Table '${tableName}' does not have column '${columnName}'` - ); - return; - } - - common.logging.info( - `Updating ${tableName}, setting '${from}' in ${columnName} to '${to}'` - ); - - return connection(tableName) - .where(columnName, from) - .update(columnName, to); - }); - }); -}; - -module.exports.up = ({transacting}) => { - const replaceEmptyStringWithNull = createReplace(transacting, '', null); - - return Promise.all( - tablesToUpdate.map(({tableName, columns}) => Promise.all( - columns.map( - columnName => replaceEmptyStringWithNull(tableName, columnName) - ) - )) - ); -}; - -module.exports.down = ({connection}) => { - const replaceNullWithEmptyString = createReplace(connection, null, ''); - - return Promise.all( - tablesToUpdate.map(({tableName, columns}) => Promise.all( - columns.map( - columnName => replaceNullWithEmptyString(tableName, columnName) - ) - )) - ); -}; - -module.exports.config = { - transaction: true -}; +module.exports.down = () => Promise.resolve();