Files
myspeed/server/controller/config.js
2023-05-28 21:00:59 +02:00

47 lines
1.3 KiB
JavaScript

const config = require("../models/Config");
const {triggerEvent} = require("./integrations");
const configDefaults = {
"ping": "25",
"download": "100",
"upload": "50",
"cron": "0 * * * *",
"serverId": "none",
"password": "none",
"passwordLevel": "none",
"acceptOoklaLicense": "false"
}
module.exports.insertDefaults = async () => {
let insert = [];
for (let key in configDefaults) {
if (!(await config.findOne({where: {key: key}})))
insert.push({key: key, value: configDefaults[key]});
}
await config.bulkCreate(insert, {validate: true});
}
// Lists all config entries
module.exports.list = async () => {
return await config.findAll();
}
// Gets a specific config entry
module.exports.get = async (key) => {
return await config.findByPk(key);
}
// Updates a specific config entry
module.exports.update = async (key, newValue) => {
if ((await this.get(key)) === undefined) return undefined;
triggerEvent("configUpdated", {key: key, value: key === "password" ? "protected" :newValue}).then(() => {});
return await config.update({value: newValue}, {where: {key: key}});
}
// Resets a specific config entry to the default value
module.exports.resetDefault = async (key) => {
await this.update(key, configDefaults[key]);
}