95 lines
2.4 KiB
JavaScript
95 lines
2.4 KiB
JavaScript
import appConfig from '../config/app.js';
|
|
import Base from './base.js';
|
|
|
|
class Config extends Base {
|
|
static tableName = 'config';
|
|
|
|
static jsonSchema = {
|
|
type: 'object',
|
|
|
|
properties: {
|
|
id: { type: 'string', format: 'uuid' },
|
|
installationCompleted: { type: 'boolean' },
|
|
logoSvgData: { type: ['string', 'null'] },
|
|
palettePrimaryDark: { type: ['string', 'null'] },
|
|
palettePrimaryLight: { type: ['string', 'null'] },
|
|
palettePrimaryMain: { type: ['string', 'null'] },
|
|
title: { type: ['string', 'null'] },
|
|
enableTemplates: { type: ['boolean', 'null'] },
|
|
enableFooter: { type: 'boolean' },
|
|
footerLogoSvgData: { type: ['string', 'null'] },
|
|
footerCopyrightText: { type: ['string', 'null'] },
|
|
footerBackgroundColor: { type: ['string', 'null'] },
|
|
footerTextColor: { type: ['string', 'null'] },
|
|
footerDocsUrl: { type: ['string', 'null'] },
|
|
footerTosUrl: { type: ['string', 'null'] },
|
|
footerPrivacyPolicyUrl: { type: ['string', 'null'] },
|
|
footerImprintUrl: { type: ['string', 'null'] },
|
|
createdAt: { type: 'string' },
|
|
updatedAt: { type: 'string' },
|
|
},
|
|
};
|
|
|
|
static get virtualAttributes() {
|
|
return [
|
|
'disableNotificationsPage',
|
|
'disableFavicon',
|
|
'additionalDrawerLink',
|
|
'additionalDrawerLinkIcon',
|
|
'additionalDrawerLinkText',
|
|
];
|
|
}
|
|
|
|
get disableNotificationsPage() {
|
|
return appConfig.disableNotificationsPage;
|
|
}
|
|
|
|
get disableFavicon() {
|
|
return appConfig.disableFavicon;
|
|
}
|
|
|
|
get additionalDrawerLink() {
|
|
return appConfig.additionalDrawerLink;
|
|
}
|
|
|
|
get additionalDrawerLinkIcon() {
|
|
return appConfig.additionalDrawerLinkIcon;
|
|
}
|
|
|
|
get additionalDrawerLinkText() {
|
|
return appConfig.additionalDrawerLinkText;
|
|
}
|
|
|
|
static async get() {
|
|
const existingConfig = await this.query().limit(1).first();
|
|
|
|
if (!existingConfig) {
|
|
return await this.query().insertAndFetch({});
|
|
}
|
|
|
|
return existingConfig;
|
|
}
|
|
|
|
static async update(config) {
|
|
const configEntry = await this.get();
|
|
|
|
return await configEntry.$query().patchAndFetch(config);
|
|
}
|
|
|
|
static async isInstallationCompleted() {
|
|
const config = await this.get();
|
|
|
|
return config.installationCompleted;
|
|
}
|
|
|
|
static async markInstallationCompleted() {
|
|
const config = await this.get();
|
|
|
|
return await config.$query().patchAndFetch({
|
|
installationCompleted: true,
|
|
});
|
|
}
|
|
}
|
|
|
|
export default Config;
|