77 lines
2.5 KiB
JavaScript
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);
|
|
} |