cf9cee0208
refs https://github.com/TryGhost/Team/issues/1070 - added `bread` util that acts as a wrapper for the provided model, if we have any business functionality needed when settings are added/removed then it will go here - added primary "server" service that handles syncing of custom theme data extracted from a theme with the settings that are in the database and exported as "Service". Syncing rules on theme activation: - if a new setting is seen, create it with the default value - if a setting has it's type changed, remove it and create a new setting with the default value - if a select setting's value is not a valid option, reset it to the default value - added shared "frontend/server" service that exposes an in-memory cache of key/value pairs for the currently active theme
30 lines
755 B
JavaScript
30 lines
755 B
JavaScript
module.exports = class CustomThemeSettingsBREADService {
|
|
/**
|
|
* @param {Object} options
|
|
* @param {Object} options.model - Bookshelf model for custom theme settings
|
|
*/
|
|
constructor({model}) {
|
|
this.Model = model;
|
|
}
|
|
|
|
async browse(data, options = {}) {
|
|
return this.Model.findAll(data, options);
|
|
}
|
|
|
|
async read(data, options = {}) {
|
|
return this.Model.findOne(data, options);
|
|
}
|
|
|
|
async edit(data, options = {}) {
|
|
return this.Model.edit(data, Object.assign({}, options, {method: 'update'}));
|
|
}
|
|
|
|
async add(data, options = {}) {
|
|
return this.Model.add(data, options);
|
|
}
|
|
|
|
async destroy(data, options = {}) {
|
|
return this.Model.destroy(data, options);
|
|
}
|
|
};
|