const _ = require('lodash'); const ghostBookshelf = require('./base'); const CustomThemeSetting = ghostBookshelf.Model.extend({ tableName: 'custom_theme_settings', parse() { const attrs = ghostBookshelf.Model.prototype.parse.apply(this, arguments); const settingType = attrs.type; // transform "0" to false for boolean type if (settingType === 'boolean' && (attrs.value === '0' || attrs.value === '1')) { attrs.value = !!+attrs.value; } // transform "false" to false for boolean type if (settingType === 'boolean' && (attrs.value === 'false' || attrs.value === 'true')) { attrs.value = JSON.parse(attrs.value); } return attrs; }, format() { const attrs = ghostBookshelf.Model.prototype.format.apply(this, arguments); const settingType = attrs.type; if (settingType === 'boolean') { // CASE: Ensure we won't forward strings, otherwise model events or model interactions can fail if (attrs.value === '0' || attrs.value === '1') { attrs.value = !!+attrs.value; } // CASE: Ensure we won't forward strings, otherwise model events or model interactions can fail if (attrs.value === 'false' || attrs.value === 'true') { attrs.value = JSON.parse(attrs.value); } if (_.isBoolean(attrs.value)) { attrs.value = attrs.value.toString(); } } return attrs; } }); module.exports = { CustomThemeSetting: ghostBookshelf.model('CustomThemeSetting', CustomThemeSetting) };