72 lines
2.2 KiB
JavaScript
72 lines
2.2 KiB
JavaScript
const { Sequelize } = require("sequelize");
|
|
|
|
/**
|
|
*
|
|
* @param {Sequelize} client
|
|
* @param {*} callback
|
|
*/
|
|
module.exports.initSQLConnection = async (client, config, callback) => {
|
|
let tables = {};
|
|
var call_data = {
|
|
list: async (table, data, callback) => {
|
|
console.log(`Listing ${table}`);
|
|
let result = await tables[table].findAll({ where: data });
|
|
if (!result) {
|
|
await callback(result);
|
|
} else {
|
|
await callback(result.map(r => r.dataValues));
|
|
}
|
|
},
|
|
|
|
delete: async (table, uuid, callback) => {
|
|
await tables[table].destroy({ where: { uuid: uuid } });
|
|
await callback(true);
|
|
},
|
|
|
|
search: async (table, data, callback) => {
|
|
console.log(`Searching ${table}`);
|
|
var result = await tables[table].findOne({ where: data });
|
|
await callback(result);
|
|
},
|
|
insert: async (table, data, callback) => {
|
|
console.log(`Inserting to ${table}`);
|
|
var uuid = require('node:crypto').randomUUID();
|
|
let instance = tables[table].build({
|
|
uuid: uuid,
|
|
...data
|
|
});
|
|
await instance.save();
|
|
await callback(uuid);
|
|
},
|
|
|
|
edit: async (table, uuid, data, callback) => {
|
|
try {
|
|
await tables[table].update({
|
|
uuid: uuid,
|
|
...data
|
|
}, {
|
|
where: { uuid: uuid }
|
|
});
|
|
await callback(true);
|
|
} catch (e) {
|
|
await callback(false);
|
|
console.error(`Error:\n${e}`);
|
|
}
|
|
},
|
|
|
|
|
|
build: async () => {
|
|
var __tables = require("./collection_tables.json");
|
|
var __schema = require("./schemas.js");
|
|
var schema = __schema.sql;
|
|
for (var table of __tables) {
|
|
const model = client.define(table.replaceAll(".", "__"), schema[table.replaceAll(".", "__")], { freezeTableName: true });
|
|
tables[table] = model;
|
|
}
|
|
await client.sync();
|
|
}
|
|
}
|
|
|
|
callback(call_data);
|
|
}
|