Ghost/ghost/custom-theme-settings-service/lib/bread.js
Kevin Ansfield cf9cee0208 First pass at custom-theme-settings-service functionality
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
2021-09-22 21:56:45 +01:00

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);
}
};