xantic/database/mysqld.js

77 lines
2.5 KiB
JavaScript

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