114 lines
3.3 KiB
JavaScript
114 lines
3.3 KiB
JavaScript
import {
|
|
getDocumentByField,
|
|
deleteDocumentByField,
|
|
getDocumentByFields,
|
|
upsertDocumentByField,
|
|
deleteDocumentByFields,
|
|
upsertDocumentByFields,
|
|
} from "./mongoHandler.mjs"; // Import your MongoDB handlers
|
|
import { DebugBuilder } from "../debugger.mjs";
|
|
|
|
const log = new DebugBuilder("server", "mongoConfigWrappers");
|
|
|
|
const collectionName = "configurations";
|
|
|
|
// Function to get a configuration by key
|
|
export const getConfig = async (key) => {
|
|
try {
|
|
const config = await getDocumentByField(collectionName, "key", key);
|
|
log.DEBUG(`Configuration for key "${key}" retrieved:`, config);
|
|
return config ? config[key] : null; // Return null if no configuration is found
|
|
} catch (error) {
|
|
log.ERROR("Error retrieving configuration:", error);
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
// Function to set a configuration by key
|
|
export const setConfig = async (key, value) => {
|
|
// Set the config object
|
|
value = { key: value };
|
|
try {
|
|
const result = await upsertDocumentByField(
|
|
collectionName,
|
|
"key",
|
|
key,
|
|
value,
|
|
);
|
|
log.DEBUG(`Configuration for key "${key}" set:`, value, result);
|
|
return result > 0 ? key : null; // Return key if updated successfully, otherwise null
|
|
} catch (error) {
|
|
log.ERROR("Error setting configuration:", error);
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
// Function to delete a configuration by key (optional)
|
|
export const deleteConfig = async (key) => {
|
|
try {
|
|
const result = await deleteDocumentByField(collectionName, "key", key);
|
|
log.DEBUG(`Configuration for key "${key}" deleted:`, result);
|
|
return result; // Return the count of deleted documents
|
|
} catch (error) {
|
|
log.ERROR("Error deleting configuration:", error);
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
// Function to get a configuration by key for a specific guild
|
|
export const getGuildConfig = async (guildId, key) => {
|
|
try {
|
|
const config = await getDocumentByFields(
|
|
collectionName,
|
|
["guild", Number(guildId)],
|
|
["key", key],
|
|
);
|
|
log.DEBUG(
|
|
`Guild ${guildId} configuration for key "${key}" retrieved:`,
|
|
config,
|
|
);
|
|
return config ? config[key] : null; // Return null if no configuration is found
|
|
} catch (error) {
|
|
log.ERROR("Error retrieving guild configuration:", error);
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
// Function to set a configuration by key for a specific guild
|
|
export const setGuildConfig = async (guildId, key, value) => {
|
|
// Set the config object
|
|
value = { key: value };
|
|
try {
|
|
const result = await upsertDocumentByFields(
|
|
collectionName,
|
|
value,
|
|
["guild", Number(guildId)],
|
|
["key", key],
|
|
);
|
|
log.DEBUG(`Guild ${guildId} configuration for key "${key}" set:`, value);
|
|
return result > 0 ? key : null; // Return key if updated successfully, otherwise null
|
|
} catch (error) {
|
|
log.ERROR("Error setting guild configuration:", error);
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
// Function to delete a configuration by key for a specific guild (optional)
|
|
export const deleteGuildConfig = async (guildId, key) => {
|
|
try {
|
|
const result = await deleteDocumentByFields(
|
|
collectionName,
|
|
["guild", Number(guildId)],
|
|
["key", key],
|
|
);
|
|
log.DEBUG(
|
|
`Guild ${guildId} configuration for key "${key}" deleted:`,
|
|
result,
|
|
);
|
|
return result; // Return the count of deleted documents
|
|
} catch (error) {
|
|
log.ERROR("Error deleting guild configuration:", error);
|
|
throw error;
|
|
}
|
|
};
|