Files
vector-admin/backend/models/systemSettings.js
T
timothycarambat f2bb9a9fe2 WIP checkpoint
2023-09-27 16:39:19 -07:00

69 lines
2.0 KiB
JavaScript

const prisma = require("../utils/prisma");
const SystemSettings = {
supportedFields: [
"allow_account_creation",
"account_creation_domain_scope",
"open_ai_api_key",
"debug_username",
"debug_pwd",
"telemetry_id",
],
privateField: ["open_ai_api_key"],
get: async function (clause = {}) {
try {
const setting = await prisma.system_settings.findFirst({ where: clause });
return setting || null;
} catch (e) {
console.error(e.message);
return null;
}
},
where: async function (clause = {}, limit = null) {
try {
const settings = await prisma.system_settings.findMany({
where: clause,
...(limit !== null ? { take: limit } : {}),
});
return settings;
} catch (e) {
console.error(e.message);
return [];
}
},
updateSettings: async function (updates = {}) {
const validConfigKeys = Object.keys(updates).filter((key) =>
this.supportedFields.includes(key)
);
for (const key of validConfigKeys) {
const existingRecord = await this.get({ label: key });
if (!existingRecord) {
const value = updates[key] === null ? "" : String(updates[key]);
const success = await prisma.system_settings.create({
data: { label: key, value },
});
if (!success) {
console.error("FAILED TO ADD SYSTEM CONFIG OPTION", message);
return { success: false, error: message };
}
} else {
const value = updates[key] === null ? "" : String(updates[key]);
const success = await prisma.system_settings.update({
where: { id: Number(existingRecord.id) },
data: { label: key, value },
});
if (!success) {
console.error("FAILED TO UPDATE SYSTEM CONFIG OPTION", message);
return { success: false, error: message };
}
}
}
return { success: true, error: null };
},
};
module.exports.SystemSettings = SystemSettings;