From 2614565d5abf1982b61c7ef6e9360f2b9ddb0574 Mon Sep 17 00:00:00 2001 From: Naz Date: Wed, 24 Jun 2020 01:10:25 +1200 Subject: [PATCH] Settings keys renames (#11948) refs https://github.com/TryGhost/Ghost/issues/10318 - Adds following renames to settings table keys: 'default_locale' -> 'lang' 'active_timezone' -> 'timezone' 'ghost_head' -> 'codeinjection_head' 'ghost_foot' -> 'codeinjection_foot' 'brand.publicationColor' -> 'accent_color' - The renames are done to match revised naming conventions and naming exposed through APIs - Supersedes this revert - https://github.com/TryGhost/Ghost/commit/1eeb5a60b85a33dc6ade5a45fc99c72164a29ae4 and #11946 --- .../versions/3.22/02-settings-key-renames.js | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 core/server/data/migrations/versions/3.22/02-settings-key-renames.js diff --git a/core/server/data/migrations/versions/3.22/02-settings-key-renames.js b/core/server/data/migrations/versions/3.22/02-settings-key-renames.js new file mode 100644 index 0000000000..a25ba7adc7 --- /dev/null +++ b/core/server/data/migrations/versions/3.22/02-settings-key-renames.js @@ -0,0 +1,82 @@ +const logging = require('../../../../../shared/logging'); + +const renameMapping = [{ + from: 'default_locale', + to: 'lang' +}, { + from: 'active_timezone', + to: 'timezone' +}, { + from: 'ghost_head', + to: 'codeinjection_head' +}, { + from: 'ghost_foot', + to: 'codeinjection_foot' +}]; + +module.exports = { + config: { + transaction: true + }, + + async up(options) { + await Promise.map(renameMapping, async (renameMap) => { + logging.info(`Renaming ${renameMap.from} to ${renameMap.to}`); + + return await options + .transacting('settings') + .where('key', renameMap.from) + .update({ + key: renameMap.to + }); + }); + + const brandResult = await options + .transacting('settings') + .where('key', 'brand') + .select('value'); + + const value = JSON.parse(brandResult[0].value); + const accentColor = value.brand.primaryColor || ''; + + logging.info(`Updating brand.primaryColor in settings to accent_color with value '${accentColor}'`); + + return await options + .transacting('settings') + .where('key', 'brand') + .update('key', 'accent_color') + .update('value', accentColor); + }, + + async down(options) { + await Promise.map(renameMapping, async (renameMap) => { + logging.info(`Renaming ${renameMap.to} to ${renameMap.from}`); + + return await options + .transacting('settings') + .where('key', renameMap.to) + .update({ + key: renameMap.from + }); + }); + + let accentColor = await options + .transacting('settings') + .where('key', 'accent_color') + .select('value'); + + const primaryColor = accentColor[0].value || ''; + + logging.info(`Updating accent_color in settings to brand.primaryColor with value '${primaryColor}'`); + + return await options + .transacting('settings') + .where('key', 'accent_color') + .update('key', 'brand') + .update('value', JSON.stringify({ + brand: { + primaryColor + } + })); + } +};