half-mysqld implementation and bug fixes

This commit is contained in:
ui_creeperlv 2024-03-06 18:23:26 +05:30
parent a5c65ae583
commit 133f68276b
4 changed files with 95 additions and 7 deletions

View File

@ -20,9 +20,9 @@ module.exports.initMongoDBInstance = async (client,config,callback) => {
list: async (table , callback) => { list: async (table , callback) => {
var collection = db.collection(table); 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) => { insert: async (table, data,callback) => {
@ -49,9 +49,9 @@ module.exports.initMongoDBInstance = async (client,config,callback) => {
search: async (table, data , callback) => { search: async (table, data , callback) => {
var collection = db.collection(table); 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) => { edit: async (table, uuid, data , callback) => {

View File

@ -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);
}

View File

@ -9,12 +9,13 @@ module.exports = {
// Database Configurations // Database Configurations
// Possible Options ["mongod" , "mysqld"] // Possible Options ["mongod" , "mysqld"]
database_adapter: "mongod", database_adapter: "mysqld",
// If using MongoDB // If using MongoDB
database_uri: process.env['database_uri'] || "", database_uri: process.env['database_uri'] || "",
database_name: "xantic", database_name: "xantic",
// If using MySQL // If using MySQL
database_host: "localhost", database_host: "localhost",
database_user: "root", database_user: "root",
datbase_password: process.env['database_password'] || "" database_password: process.env['database_password'] || "",
database_engine: "InnoDB"
} }

View File

@ -4,6 +4,7 @@ const config = require("./config/prod");
const fs = require('node:fs'); const fs = require('node:fs');
const path = require('node:path'); const path = require('node:path');
const { MongoClient } = require("mongodb"); const { MongoClient } = require("mongodb");
const mysql = require('mysql2');
const { Client, Events, GatewayIntentBits, Collection } = require('discord.js'); const { Client, Events, GatewayIntentBits, Collection } = require('discord.js');
const client = new Client({ const client = new Client({
@ -24,7 +25,17 @@ async function main() {
require("../database/mongod").initMongoDBInstance(mongo_client, config, (back) => initMessageManager(back)); require("../database/mongod").initMongoDBInstance(mongo_client, config, (back) => initMessageManager(back));
} else if (config.database_adapter == "mysqld") { } 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));
} }
} }