73 lines
1.5 KiB
JavaScript
73 lines
1.5 KiB
JavaScript
import Base from './base.js';
|
|
|
|
class Config extends Base {
|
|
static tableName = 'config';
|
|
|
|
static jsonSchema = {
|
|
type: 'object',
|
|
required: ['key', 'value'],
|
|
|
|
properties: {
|
|
id: { type: 'string', format: 'uuid' },
|
|
key: { type: 'string', minLength: 1 },
|
|
value: { type: 'object' },
|
|
},
|
|
};
|
|
|
|
static async isInstallationCompleted() {
|
|
const installationCompletedEntry = await this.query()
|
|
.where({
|
|
key: 'installation.completed',
|
|
})
|
|
.first();
|
|
|
|
const installationCompleted =
|
|
installationCompletedEntry?.value?.data === true;
|
|
|
|
return installationCompleted;
|
|
}
|
|
|
|
static async markInstallationCompleted() {
|
|
return await this.query().insert({
|
|
key: 'installation.completed',
|
|
value: {
|
|
data: true,
|
|
},
|
|
});
|
|
}
|
|
|
|
static async batchUpdate(config) {
|
|
const configKeys = Object.keys(config);
|
|
const updates = [];
|
|
|
|
for (const key of configKeys) {
|
|
const newValue = config[key];
|
|
|
|
if (newValue) {
|
|
const entryUpdate = Config.query()
|
|
.insert({
|
|
key,
|
|
value: {
|
|
data: newValue,
|
|
},
|
|
})
|
|
.onConflict('key')
|
|
.merge({
|
|
value: {
|
|
data: newValue,
|
|
},
|
|
});
|
|
|
|
updates.push(entryUpdate);
|
|
} else {
|
|
const entryUpdate = Config.query().findOne({ key }).delete();
|
|
updates.push(entryUpdate);
|
|
}
|
|
}
|
|
|
|
return await Promise.all(updates);
|
|
}
|
|
}
|
|
|
|
export default Config;
|