## Added Dynamic Presence to Functions - Added default to startup - Added to RSS manager - Added to interaction create event - Added to message create function ## Related Work #15 ### LinkCop - Updated with new regex string and logic approved and restricted channels - Implemented new config storage ### Guild Member Add (event) - Implemented new config storage for welcome channel ### Message Create (event) - Implemented new config storage for ignored channel IDs - Improved the logic for gpt interactions to reset presence ### Mongo Config Wrappers - Updated logic in order to handle different data types the same way - Updated set functions to wrap the value in the key - Updated get functions to return the keyyed value ie `config[key]`
83 lines
3.3 KiB
JavaScript
83 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, ['guildId', 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, ['guildId', 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, ['guildId', 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;
|
|
}
|
|
};
|