⚙️ Refactored saveSettings endpoint

This commit is contained in:
2023-09-15 15:49:13 -04:00
parent 1fff931941
commit 3efdc7c2e2
2 changed files with 432 additions and 416 deletions

720
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -56,70 +56,84 @@ export default class SettingsService extends Service {
settingsKey: string; settingsKey: string;
}> }>
) { ) {
let query = {}; try {
const { settingsKey, settingsObjectId } = ctx.params; let query = {};
const { hostname, protocol, port, username, password } = const { settingsKey, settingsObjectId } =
ctx.params.settingsPayload; ctx.params;
const {
hostname,
protocol,
port,
username,
password,
} = ctx.params.settingsPayload;
switch (settingsKey) { // Update, depending what key was passed in params
case "bittorrent": // 1. Construct the update query
console.log( switch (settingsKey) {
`Recieved settings for ${settingsKey}, building query...` case "bittorrent":
); console.log(
query = { `Recieved settings for ${settingsKey}, building query...`
bittorrent: { );
client: { query = {
host: { bittorrent: {
hostname, client: {
protocol, host: {
port, hostname,
username, protocol,
password, port,
username,
password,
},
name: "qbittorrent",
}, },
name: "qbittorrent",
}, },
}, };
}; break;
break; case "directConnect":
case "directConnect": console.log(
const { hubs, airDCPPUserSettings } = `Recieved settings for ${settingsKey}, building query...`
ctx.params.settingsPayload; );
query = { const { hubs, airDCPPUserSettings } =
directConnect: { ctx.params.settingsPayload;
client: { query = {
host: { directConnect: {
hostname, client: {
protocol, host: {
port, hostname,
username, protocol,
password, port,
username,
password,
},
hubs,
airDCPPUserSettings,
}, },
hubs,
airDCPPUserSettings,
}, },
}, };
}; break;
break;
default: default:
return false; return false;
} }
const options = { // 2. Set up options, filters
upsert: true, const options = {
setDefaultsOnInsert: true, upsert: true,
}; setDefaultsOnInsert: true,
const filter = { returnDocument: "after",
_id: settingsObjectId, };
}; const filter = {
_id: settingsObjectId,
const result = await Settings.updateOne( };
{}, // 3. Execute the mongo query
query, const result = await Settings.findOneAndUpdate(
options {},
); query,
console.log(result); options
return result; );
return result;
} catch (err) {}
}, },
}, },
deleteSettings: { deleteSettings: {