🌊 Modified settings model schema
This commit is contained in:
@@ -1,21 +1,28 @@
|
|||||||
const mongoose = require("mongoose");
|
const mongoose = require("mongoose");
|
||||||
const paginate = require("mongoose-paginate-v2");
|
const paginate = require("mongoose-paginate-v2");
|
||||||
|
|
||||||
const SettingsScehma = mongoose.Schema({
|
const HostSchema = mongoose.Schema({
|
||||||
directConnect: {
|
_id: false,
|
||||||
client: {
|
|
||||||
host: {
|
|
||||||
username: String,
|
username: String,
|
||||||
password: String,
|
password: String,
|
||||||
hostname: String,
|
hostname: String,
|
||||||
port: String,
|
port: String,
|
||||||
protocol: String,
|
protocol: String,
|
||||||
},
|
});
|
||||||
|
const SettingsScehma = mongoose.Schema({
|
||||||
|
directConnect: {
|
||||||
|
client: {
|
||||||
|
host: HostSchema,
|
||||||
airDCPPUserSettings: Object,
|
airDCPPUserSettings: Object,
|
||||||
|
|
||||||
hubs: Array,
|
hubs: Array,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
bittorrent: {
|
||||||
|
client: {
|
||||||
|
name: String,
|
||||||
|
host: HostSchema,
|
||||||
|
},
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const Settings = mongoose.model("Settings", SettingsScehma);
|
const Settings = mongoose.model("Settings", SettingsScehma);
|
||||||
|
|||||||
@@ -42,43 +42,83 @@ export default class SettingsService extends Service {
|
|||||||
params: {},
|
params: {},
|
||||||
async handler(
|
async handler(
|
||||||
ctx: Context<{
|
ctx: Context<{
|
||||||
settingsPayload: {
|
settingsPayload?: {
|
||||||
host: object;
|
protocol: string;
|
||||||
airDCPPUserSettings: object;
|
hostname: string;
|
||||||
hubs: [];
|
port: string;
|
||||||
|
username: string;
|
||||||
|
password: string;
|
||||||
|
_id?: string;
|
||||||
|
airDCPPUserSettings?: object;
|
||||||
|
hubs?: [];
|
||||||
};
|
};
|
||||||
settingsObjectId: string;
|
settingsObjectId?: string;
|
||||||
|
settingsKey: string;
|
||||||
}>
|
}>
|
||||||
) {
|
) {
|
||||||
console.log("varan bhat", ctx.params);
|
let query = {};
|
||||||
const { host, airDCPPUserSettings, hubs } =
|
const { settingsKey, settingsObjectId } = ctx.params;
|
||||||
|
const { hostname, protocol, port, username, password } =
|
||||||
ctx.params.settingsPayload;
|
ctx.params.settingsPayload;
|
||||||
let query = {
|
|
||||||
host,
|
|
||||||
airDCPPUserSettings,
|
|
||||||
hubs,
|
|
||||||
};
|
|
||||||
const keysToUpdate = pickBy(query, identity);
|
|
||||||
let updateQuery = {};
|
|
||||||
|
|
||||||
map(Object.keys(keysToUpdate), (key) => {
|
switch (settingsKey) {
|
||||||
updateQuery[`directConnect.client.${key}`] =
|
case "bittorrent":
|
||||||
query[key];
|
console.log(
|
||||||
});
|
`Recieved settings for ${settingsKey}, building query...`
|
||||||
|
);
|
||||||
|
query = {
|
||||||
|
bittorrent: {
|
||||||
|
client: {
|
||||||
|
host: {
|
||||||
|
hostname,
|
||||||
|
protocol,
|
||||||
|
port,
|
||||||
|
username,
|
||||||
|
password,
|
||||||
|
},
|
||||||
|
name: "qbittorrent",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "directConnect":
|
||||||
|
const { hubs, airDCPPUserSettings } =
|
||||||
|
ctx.params.settingsPayload;
|
||||||
|
query = {
|
||||||
|
directConnect: {
|
||||||
|
client: {
|
||||||
|
host: {
|
||||||
|
hostname,
|
||||||
|
protocol,
|
||||||
|
port,
|
||||||
|
username,
|
||||||
|
password,
|
||||||
|
},
|
||||||
|
hubs,
|
||||||
|
airDCPPUserSettings,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const options = {
|
const options = {
|
||||||
upsert: true,
|
upsert: true,
|
||||||
new: true,
|
|
||||||
setDefaultsOnInsert: true,
|
setDefaultsOnInsert: true,
|
||||||
};
|
};
|
||||||
const filter = {
|
const filter = {
|
||||||
_id: new ObjectId(ctx.params.settingsObjectId),
|
_id: settingsObjectId,
|
||||||
};
|
};
|
||||||
const result = Settings.findOneAndUpdate(
|
|
||||||
filter,
|
const result = await Settings.updateOne(
|
||||||
{ $set: updateQuery },
|
{},
|
||||||
|
query,
|
||||||
options
|
options
|
||||||
);
|
);
|
||||||
|
console.log(result);
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user