half-mysqld implementation and bug fixes
This commit is contained in:
		
							parent
							
								
									a5c65ae583
								
							
						
					
					
						commit
						133f68276b
					
				|  | @ -20,9 +20,9 @@ module.exports.initMongoDBInstance = async (client,config,callback) => { | |||
|         list: async (table , callback) => { | ||||
|             var collection = db.collection(table); | ||||
| 
 | ||||
|             var data = await collection.find(data); | ||||
|             var found_data = await collection.find(data); | ||||
| 
 | ||||
|             callback(data); | ||||
|             callback(found_data); | ||||
|         }, | ||||
| 
 | ||||
|         insert: async (table, data,callback) => { | ||||
|  | @ -49,9 +49,9 @@ module.exports.initMongoDBInstance = async (client,config,callback) => { | |||
|         search: async (table, data , callback) => { | ||||
|             var collection = db.collection(table); | ||||
| 
 | ||||
|             var data = await collection.findOne(data); | ||||
|             var found_data = await collection.findOne(data); | ||||
| 
 | ||||
|             callback(data); | ||||
|             callback(found_data); | ||||
|         }, | ||||
| 
 | ||||
|         edit: async (table, uuid, data , callback) => { | ||||
|  |  | |||
|  | @ -1 +1,77 @@ | |||
| // [WIP]
 | ||||
| /** | ||||
|  *  | ||||
|  * @param {import('mysql2').Connection} client  | ||||
|  * @param {*} callback  | ||||
|  */ | ||||
| module.exports.initMYSQL2Connection = async (client,config,callback) => { | ||||
|     var call_data = { | ||||
|         createStore: async (name, callback) => { | ||||
|             client.query( | ||||
|                 `CREATE TABLE ${name.replace(".","")} (id INT NOT NULL AUTO_INCREMENT , uuid VARCHAR(256) NOT NULL , data LONGTEXT NOT NULL, timestamp VARCHAR(16) NOT NULL  , PRIMARY KEY (id)) ENGINE = ${config.database_engine};`, | ||||
|                 async function(err,results,fields) { | ||||
|                     callback(true); | ||||
|                 } | ||||
|             ) | ||||
|         }, | ||||
| 
 | ||||
|         list: async (table , callback) => { | ||||
|             var fetchData = []; | ||||
| 
 | ||||
|             client.query( | ||||
|                 `SELECT * FROM ${table.replace(".","")}`, | ||||
|                 async function(err,results,fields) { | ||||
|                     for(var element of results) { | ||||
|                         var data = JSON.parse(element['data']); | ||||
|                         await fetchData.push({ | ||||
|                             uuid: element['uuid'], | ||||
|                             ...data | ||||
|                         }); | ||||
| 
 | ||||
|                         await callback(fetchData); | ||||
|                     } | ||||
|                 } | ||||
|             ) | ||||
|         }, | ||||
| 
 | ||||
|         search: async (table , data , callback) => { | ||||
|             var fetchData = []; | ||||
| 
 | ||||
|             client.query( | ||||
|                 `SELECT * FROM ${table.replace(".","")}`, | ||||
|                 async function(err,results,fields) { | ||||
|                     for(var element of results) { | ||||
|                         var data = JSON.parse(element['data']); | ||||
|                         if(data) | ||||
|                         await fetchData.push({ | ||||
|                             uuid: element['uuid'], | ||||
|                             ...data | ||||
|                         }); | ||||
| 
 | ||||
|                         await callback(fetchData); | ||||
|                     } | ||||
|                 } | ||||
|             ) | ||||
|         }, | ||||
| 
 | ||||
|         insert: async (table, data,callback) => { | ||||
|             var uuid = require('node:crypto').randomUUID(); | ||||
| 
 | ||||
|             client.query( | ||||
|                 `INSERT INTO ${table.replace(".","")} (uuid, data, timestamp) VALUES 
 | ||||
|                     ('${uuid}', '${JSON.stringify(data)}', '${Date.now()}')`,
 | ||||
|                 async function(err,result,fields) { | ||||
|                     callback(uuid) | ||||
|                 } | ||||
|             ) | ||||
|         }, | ||||
| 
 | ||||
|         build: async () => { | ||||
|             var tables = require("./collection_tables.json"); | ||||
|             for(var table of tables){ | ||||
|                 call_data.createStore(table , (state) => {}); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     callback(call_data); | ||||
| } | ||||
|  | @ -9,12 +9,13 @@ module.exports = { | |||
| 
 | ||||
|     // Database Configurations
 | ||||
|     // Possible Options ["mongod" , "mysqld"]
 | ||||
|     database_adapter: "mongod", | ||||
|     database_adapter: "mysqld", | ||||
|     // If using MongoDB
 | ||||
|     database_uri: process.env['database_uri'] || "", | ||||
|     database_name: "xantic", | ||||
|     // If using MySQL
 | ||||
|     database_host: "localhost", | ||||
|     database_user: "root", | ||||
|     datbase_password: process.env['database_password'] || "" | ||||
|     database_password: process.env['database_password'] || "", | ||||
|     database_engine: "InnoDB" | ||||
| } | ||||
							
								
								
									
										11
									
								
								src/index.js
								
								
								
								
							
							
						
						
									
										11
									
								
								src/index.js
								
								
								
								
							|  | @ -4,6 +4,7 @@ const config = require("./config/prod"); | |||
| const fs = require('node:fs'); | ||||
| const path = require('node:path'); | ||||
| const { MongoClient } = require("mongodb"); | ||||
| const mysql = require('mysql2'); | ||||
| const { Client, Events, GatewayIntentBits, Collection } = require('discord.js'); | ||||
| 
 | ||||
| const client = new Client({ | ||||
|  | @ -24,7 +25,17 @@ async function main() { | |||
| 
 | ||||
| 		require("../database/mongod").initMongoDBInstance(mongo_client, config, (back) => initMessageManager(back)); | ||||
| 	} else if (config.database_adapter == "mysqld") { | ||||
| 		const mysql_connection = mysql.createConnection({ | ||||
| 			host: config.database_host, | ||||
| 			user: config.database_user, | ||||
| 			password: config.database_password, | ||||
| 			database: config.database_name, | ||||
| 		}); | ||||
| 
 | ||||
| 		mysql_connection.connect(); | ||||
| 		mysql_connection.on('error', (error) => console.error); | ||||
| 
 | ||||
| 		require("../database/mysqld").initMYSQL2Connection(mysql_connection, config, (back) => initMessageManager(back)); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue