🏗 Updated "unsplash" setting handling to match updated format

refs https://github.com/TryGhost/Ghost/issues/10318

- JSON object format used in previous "unsplash" setting was considered an
anti-pattern. Flat structure was extracted out of the "unsplash.isActive" JSON.
- The naming convention uses `amp` as  a precedent (https://github.com/TryGhost/Team/issues/331#issuecomment-658815017)
This commit is contained in:
Fabien O'Carroll 2020-07-14 10:16:50 +02:00 committed by naz
parent 0097f2037c
commit 9cb069eb8e
4 changed files with 69 additions and 3 deletions

View File

@ -0,0 +1,29 @@
const {createIrreversibleMigration} = require('../../utils');
module.exports = createIrreversibleMigration(async (knex) => {
const unsplashSetting = await knex('settings')
.select('value')
.where({
key: 'unsplash'
})
.first();
let isActive;
try {
const value = JSON.parse(unsplashSetting.value);
isActive = typeof value.isActive === 'boolean' ? value.isActive : true;
} catch (err) {
isActive = true;
}
await knex('settings')
.update({
group: 'unsplash',
type: 'boolean',
flags: null,
value: isActive.toString()
})
.where({
key: 'unsplash'
});
});

View File

@ -0,0 +1,33 @@
const logging = require('../../../../../shared/logging');
const {createIrreversibleMigration} = require('../../utils');
module.exports = createIrreversibleMigration(async (knex) => {
const unsplashSetting = await knex('settings')
.select('value')
.where({
key: 'unsplash'
})
.first();
let isActive;
try {
const value = JSON.parse(unsplashSetting.value);
isActive = typeof value.isActive === 'boolean' ? value.isActive : true;
} catch (err) {
logging.warn(`Wasn't able to parse 'unsplash' setting: ${unsplashSetting.value}, falling back to: 'true'`);
isActive = true;
}
logging.info(`Updating 'unsplash' setting to: ${isActive}`);
await knex('settings')
.update({
group: 'unsplash',
type: 'boolean',
flags: null,
value: isActive.toString()
})
.where({
key: 'unsplash'
});
});

View File

@ -406,8 +406,12 @@
},
"unsplash": {
"unsplash": {
"defaultValue": "{\"isActive\": true}",
"type": "object"
"defaultValue": "true",
"validations": {
"isEmpty": false,
"isIn": [["true", "false"]]
},
"type": "boolean"
}
},
"views": {

View File

@ -34,7 +34,7 @@ describe('DB version integrity', function () {
// Only these variables should need updating
const currentSchemaHash = '5861ed57418a0195ea01e431b8b55335';
const currentFixturesHash = '370d0da0ab7c45050b2ff30bce8896ba';
const currentSettingsHash = '6db8d92f1b76b43946bf75fbac78599d';
const currentSettingsHash = 'e1f85186a7c7ed76064b6026f68c6321';
const currentRoutesHash = '3d180d52c663d173a6be791ef411ed01';
// If this test is failing, then it is likely a change has been made that requires a DB version bump,