From 47070b08ab0ddc4a8f2e96407796de5179cfd78c Mon Sep 17 00:00:00 2001 From: Logan Cusano Date: Sat, 18 May 2024 23:16:42 -0400 Subject: [PATCH] Move mongo wrappers to their own directory --- discordBot/commands/join.mjs | 2 +- discordBot/modules/wrappers.mjs | 2 +- .../mongoDiscordIDWrappers.mjs | 0 modules/mongo-wrappers/mongoHandler.mjs | 100 ++++++++++++++++++ .../mongoNodesWrappers.mjs | 0 .../mongoSystemsWrappers.mjs | 0 modules/mongoHandler.mjs | 53 ---------- modules/socketServerWrappers.mjs | 4 +- test/socketServerWrappers.test.js | 4 +- 9 files changed, 106 insertions(+), 59 deletions(-) rename modules/{ => mongo-wrappers}/mongoDiscordIDWrappers.mjs (100%) create mode 100644 modules/mongo-wrappers/mongoHandler.mjs rename modules/{ => mongo-wrappers}/mongoNodesWrappers.mjs (100%) rename modules/{ => mongo-wrappers}/mongoSystemsWrappers.mjs (100%) delete mode 100644 modules/mongoHandler.mjs diff --git a/discordBot/commands/join.mjs b/discordBot/commands/join.mjs index ca60d04..0942a78 100644 --- a/discordBot/commands/join.mjs +++ b/discordBot/commands/join.mjs @@ -1,6 +1,6 @@ import { SlashCommandBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } from 'discord.js'; import { requestNodeJoinSystem, checkIfNodeIsConnectedToVC, checkIfNodeHasOpenDiscordClient, getNodeCurrentListeningSystem } from '../../modules/socketServerWrappers.mjs'; -import { getSystemsByNuid, getAllSystems, getSystemByName } from '../../modules/mongoSystemsWrappers.mjs'; +import { getSystemsByNuid, getAllSystems, getSystemByName } from '../../modules/mongo-wrappers/mongoSystemsWrappers.mjs'; import { getAvailableTokensInGuild } from '../modules/wrappers.mjs'; // Exporting data property diff --git a/discordBot/modules/wrappers.mjs b/discordBot/modules/wrappers.mjs index eec1bbb..4661ec2 100644 --- a/discordBot/modules/wrappers.mjs +++ b/discordBot/modules/wrappers.mjs @@ -1,5 +1,5 @@ import { checkIfNodeIsConnectedToVC, getNodeDiscordID, getNodeDiscordUsername } from '../../modules/socketServerWrappers.mjs'; -import { getAllDiscordIDs } from '../../modules/mongoDiscordIDWrappers.mjs' +import { getAllDiscordIDs } from '../../modules/mongo-wrappers/mongoDiscordIDWrappers.mjs' export const checkOnlineBotsInGuild = async (nodeIo, guildId) => { diff --git a/modules/mongoDiscordIDWrappers.mjs b/modules/mongo-wrappers/mongoDiscordIDWrappers.mjs similarity index 100% rename from modules/mongoDiscordIDWrappers.mjs rename to modules/mongo-wrappers/mongoDiscordIDWrappers.mjs diff --git a/modules/mongo-wrappers/mongoHandler.mjs b/modules/mongo-wrappers/mongoHandler.mjs new file mode 100644 index 0000000..359d16d --- /dev/null +++ b/modules/mongo-wrappers/mongoHandler.mjs @@ -0,0 +1,100 @@ +// Import necessary modules +import { MongoClient } from 'mongodb'; + +import dotenv from 'dotenv'; +dotenv.config() + +// MongoDB connection URI +const uri = process.env.MONGO_URL; + +// Function to connect to the database +export const connectToDatabase = async () => { + try { + const client = await MongoClient.connect(uri); + return client; + } catch (error) { + console.error('Error connecting to the database:', error); + throw error; + } +}; + +// Function to insert a document into the collection +export const insertDocument = async (collectionName, document) => { + const db = await connectToDatabase(); + try { + const collection = db.db().collection(collectionName); + const result = await collection.insertOne(document); + console.log('Document inserted:', result.insertedId); + return result.insertedId; + } catch (error) { + console.error('Error inserting document:', error); + throw error; + } finally { + // Close the connection + await db.close(); + } +}; + +// Function to retrieve documents from the collection +export const getDocuments = async (collectionName) => { + const db = await connectToDatabase(); + try { + const collection = db.db().collection(collectionName); + const documents = await collection.find({}).toArray(); + console.log('Documents retrieved:', documents); + return documents; + } catch (error) { + console.error('Error retrieving documents:', error); + throw error; + } finally { + // Close the connection + await db.close(); + } +}; + +// Function to retrieve a document by a specific field +export const getDocumentByField = async (collectionName, field, value) => { + const db = await connectToDatabase(); + try { + const collection = db.db().collection(collectionName); + const document = await collection.findOne({ [field]: value }); + return document; + } catch (error) { + console.error('Error retrieving document:', error); + throw error; + } finally { + await db.close(); + } +}; + +// Function to update a document by a specific field +export const updateDocumentByField = async (collectionName, field, value, updatedFields) => { + const db = await connectToDatabase(); + try { + const collection = db.db().collection(collectionName); + const result = await collection.updateOne({ [field]: value }, { $set: updatedFields }); + console.log('Document updated:', result.modifiedCount); + return result.modifiedCount; + } catch (error) { + console.error('Error updating document:', error); + throw error; + } finally { + await db.close(); + } +}; + +// Function to delete a document by a specific field +export const deleteDocumentByField = async (collectionName, field, value) => { + const db = await connectToDatabase(); + try { + const collection = db.db().collection(collectionName); + const result = await collection.deleteOne({ [field]: value }); + console.log('Document deleted:', result.deletedCount); + return result.deletedCount; + } catch (error) { + console.error('Error deleting document:', error); + throw error; + } finally { + await db.close(); + } +}; \ No newline at end of file diff --git a/modules/mongoNodesWrappers.mjs b/modules/mongo-wrappers/mongoNodesWrappers.mjs similarity index 100% rename from modules/mongoNodesWrappers.mjs rename to modules/mongo-wrappers/mongoNodesWrappers.mjs diff --git a/modules/mongoSystemsWrappers.mjs b/modules/mongo-wrappers/mongoSystemsWrappers.mjs similarity index 100% rename from modules/mongoSystemsWrappers.mjs rename to modules/mongo-wrappers/mongoSystemsWrappers.mjs diff --git a/modules/mongoHandler.mjs b/modules/mongoHandler.mjs deleted file mode 100644 index de5be26..0000000 --- a/modules/mongoHandler.mjs +++ /dev/null @@ -1,53 +0,0 @@ -// Import necessary modules -import { MongoClient } from 'mongodb'; - -import dotenv from 'dotenv'; -dotenv.config() - -// MongoDB connection URI -const uri = process.env.MONGO_URL; - -// Function to connect to the database -export const connectToDatabase = async () => { - try { - const client = await MongoClient.connect(uri); - return client; - } catch (error) { - console.error('Error connecting to the database:', error); - throw error; - } -}; - -// Function to insert a document into the collection -export const insertDocument = async (collectionName, document) => { - const db = await connectToDatabase(); - try { - const collection = db.db().collection(collectionName); - const result = await collection.insertOne(document); - console.log('Document inserted:', result.insertedId); - return result.insertedId; - } catch (error) { - console.error('Error inserting document:', error); - throw error; - } finally { - // Close the connection - await db.close(); - } -}; - -// Function to retrieve documents from the collection -export const getDocuments = async (collectionName) => { - const db = await connectToDatabase(); - try { - const collection = db.db().collection(collectionName); - const documents = await collection.find({}).toArray(); - console.log('Documents retrieved:', documents); - return documents; - } catch (error) { - console.error('Error retrieving documents:', error); - throw error; - } finally { - // Close the connection - await db.close(); - } -}; diff --git a/modules/socketServerWrappers.mjs b/modules/socketServerWrappers.mjs index 799be18..f7c0608 100644 --- a/modules/socketServerWrappers.mjs +++ b/modules/socketServerWrappers.mjs @@ -1,5 +1,5 @@ -import { createNode, getNodeByNuid, updateNodeByNuid } from "./mongoNodesWrappers.mjs" -import { createSystem, getSystemByName, updateSystemByName, getSystemsByNuid, deleteSystemByName } from "./mongoSystemsWrappers.mjs" +import { createNode, getNodeByNuid, updateNodeByNuid } from "./mongo-wrappers/mongoNodesWrappers.mjs" +import { createSystem, getSystemByName, updateSystemByName, getSystemsByNuid, deleteSystemByName } from "./mongo-wrappers/mongoSystemsWrappers.mjs" /** * Description diff --git a/test/socketServerWrappers.test.js b/test/socketServerWrappers.test.js index b9caeec..e59ca9c 100644 --- a/test/socketServerWrappers.test.js +++ b/test/socketServerWrappers.test.js @@ -1,8 +1,8 @@ // Import necessary modules for testing import { expect } from 'chai'; import ioClient from 'socket.io-client'; -import { deleteNodeByNuid, getNodeByNuid } from '../modules/mongoNodesWrappers.mjs'; -import { deleteSystemByName, getSystemByName } from '../modules/mongoSystemsWrappers.mjs'; +import { deleteNodeByNuid, getNodeByNuid } from '../modules/mongo-wrappers/mongoNodesWrappers.mjs'; +import { deleteSystemByName, getSystemByName } from '../modules/mongo-wrappers/mongoSystemsWrappers.mjs'; import { nodeDisconnectWrapper, checkIfNodeHasOpenDiscordClient, getNodeCurrentListeningSystem, checkIfNodeIsConnectedToVC, getNodeDiscordUsername, getNodeDiscordID, requestBotLeaveServer, requestNodeJoinSystem, requestNodeUpdate } from '../modules/socketServerWrappers.mjs'; import { nodeIo } from '../modules/socketServer.mjs';