Added mongo wrapper for configs #19

- Can handle discord guid specific configs and global configs
This commit is contained in:
Logan Cusano
2024-08-11 18:38:21 -04:00
parent f4886f9fc5
commit a56c19a466

View File

@@ -0,0 +1,78 @@
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, '_id', key);
log.DEBUG(`Configuration for key "${key}" retrieved:`, config);
return config || 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) => {
try {
const result = await upsertDocumentByField(collectionName, '_id', 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, '_id', 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], ['_id', key]);
log.DEBUG(`Guild ${guildId} configuration for key "${key}" retrieved:`, config);
return config || 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) => {
try {
const result = await upsertDocumentByFields(collectionName, value, ['guildId', guildId], ['_id', 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], ['_id', 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;
}
};