added version 2.0

This commit is contained in:
Lukian LEIZOUR 2024-03-04 20:38:46 +01:00
parent 0163d40b4e
commit 0f18925d1a
3231 changed files with 1449 additions and 374732 deletions

View file

@ -1,210 +1,110 @@
const mysql = require('mysql');
var mysql = require("mysql");
require("dotenv").config();
const connection = mysql.createConnection({
host: process.env.MYSQL_HOST,
user: "root",
password: process.env.MYSQL,
database: "discord"
var con = mysql.createConnection({
host: process.env.MYSQL_HOST,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE,
});
function addUserToDb(id, user) {
return new Promise((resolve, reject) => {
connection.query('INSERT INTO users(userid, username) VALUES("' + id + '","' + user + '")' , (error, results, fields) => {
if (error) {
reject(error);
} else {
console.log('User added to database');
resolve();
}
});
});
function registerUser(username, userid) {
return new Promise((resolve, reject) => {
con.query(
`INSERT INTO users (username, userid, quota) VALUES ("${username}", "${userid}", 0)`,
(err, result) => {
if (err) reject(err);
resolve(result);
}
);
});
}
function incrementQuota(id, value) {
return new Promise((resolve, reject) => {
connection.query('UPDATE users SET quota = quota + '+ value + ' WHERE userid = ' + id, (error, results, fields) => {
if (error) {
reject(error);
} else {
resolve();
}
});
});
function getUser(userid) {
return new Promise((resolve, reject) => {
con.query(
`SELECT * FROM users WHERE userid = "${userid}"`,
(err, result) => {
if (err) reject(err);
resolve(result);
}
);
});
}
function usersInDb() {
return new Promise((resolve, reject) => {
connection.query('SELECT * FROM users', (error, results, fields) => {
if (error) {
reject(error);
} else {
resolve(results);
}
});
});
function incrementQuota(user, value) {
return new Promise((resolve, reject) => {
con.query(
`UPDATE users SET quota = quota + ${value} WHERE userid = "${user}"`,
(err, result) => {
if (err) reject(err);
resolve(result);
}
);
});
}
function getQuota(id) {
return new Promise((resolve, reject) => {
connection.query('SELECT quota FROM users WHERE userid = ' + id, (error, results, fields) => {
if (error) {
reject(error);
} else {
resolve(results[0].quota);
}
});
});
function addConv(userid, channelid, guildid) {
return new Promise((resolve, reject) => {
con.query(
`INSERT INTO convs (userid, channelid, guildid) VALUES ("${userid}", "${channelid}", "${guildid}")`,
(err, result) => {
if (err) reject(err);
resolve(result);
}
);
});
}
function addConv (convName) {
return new Promise((resolve, reject) => {
connection.query('INSERT INTO conversations (name) VALUES ("' + convName + '")', (error, results, fields) => {
if (error) {
reject(error);
} else {
connection.query('CREATE TABLE ' + convName + '(id int NOT NULL AUTO_INCREMENT, author varchar(20) NOT NULL, message text, user varchar(20), PRIMARY KEY (id))', async (error, results, fields) => {
if (error) {
reject(error);
} else {
resolve(addMessage(convName, 'system', 'You are a helpful assistant.', 'System'));
}
});
}
});
});
function removeConv(channelid) {
return new Promise((resolve, reject) => {
con.query(
`DELETE FROM convs WHERE channelid = "${channelid}"`,
(err, result) => {
if (err) reject(err);
resolve(result);
}
);
});
}
function delConv (convName) {
return new Promise((resolve, reject) => {
connection.query('DROP TABLE ' + convName, (error, results, fields) => {
if (error) {
reject(error);
} else {
connection.query('DELETE FROM conversations WHERE name = "' + convName + '"', (error, results, fields) => {
if (error) {
reject(error);
} else {
resolve(results);
}
});
}
});
});
function getConv(channelid) {
return new Promise((resolve, reject) => {
con.query(
`SELECT * FROM convs WHERE channelid = "${channelid}"`,
(err, result) => {
if (err) reject(err);
resolve(result);
}
);
});
}
function getConvs() {
return new Promise((resolve, reject) => {
connection.query('SELECT name FROM conversations', (error, results, fields) => {
if (error) {
reject(error);
} else {
convs = [];
results.forEach(element => {
convs.push(element.name);
});
resolve(convs);
}
});
function getQuotasSum() {
return new Promise((resolve, reject) => {
con.query(`SELECT SUM(quota) FROM users`, (err, result) => {
if (err) reject(err);
resolve(result);
});
});
}
function addMessage(convName, author, message, user) {
return new Promise((resolve, reject) => {
connection.query('INSERT INTO ' + convName + ' (author, message, user) VALUES ("' + author + '"'+', "' + message + '", "' + user + '")', (error, results, fields) => {
if (error) {
reject(error);
} else {
resolve(results);
}
});
function resetQuotas() {
return new Promise((resolve, reject) => {
con.query(`UPDATE users SET quota = 0`, (err, result) => {
if (err) reject(err);
resolve(result);
});
});
}
function getMessages (convName, choice) {
return new Promise((resolve, reject) => {
connection.query('SELECT author, message, user FROM ' + convName, (error, results, fields) => {
if (error) {
reject(error);
} else {
messages = [];
if (choice == 'role') {
results.forEach(element => {
messages.push({"role" : element.author, "content" : element.message});
});
} else if (choice == 'user') {
results.forEach(element => {
messages.push({"user" : element.user, "content" : element.message});
});
}
resolve(messages);
}
});
});
}
async function isNewUser(id, username) {
return new Promise(async (resolve, reject) => {
users = await usersInDb().catch(error => {
reject(error);
});
test = false;
quota = 0;
users.forEach(element => {
if (element.userid == id) {
test = true;
quota = element.quota;
}
});
if (test == false) {
addUserToDb(id, username);
}
resolve({quota : quota});
});
}
async function listchannels() {
return new Promise((resolve, reject) => {
connection.query('SELECT id FROM channels', (error, results, fields) => {
if (error) {
reject(error);
} else {
channels = [];
results.forEach(element => {
channels.push(element.id);
});
resolve(channels);
}
});
});
}
async function addChannel(id) {
return new Promise((resolve, reject) => {
connection.query('INSERT INTO channels (id) VALUES (' + id + ')', (error, results, fields) => {
if (error) {
reject(error);
} else {
resolve();
}
});
});
}
async function deleteChannel(id) {
return new Promise((resolve, reject) => {
connection.query('DELETE FROM channels WHERE id = ' + id, (error, results, fields) => {
if (error) {
reject(error);
} else {
resolve();
}
});
});
}
module.exports = { addUserToDb, incrementQuota, usersInDb, getQuota, addConv, delConv, getConvs, addMessage, getMessages, isNewUser, listchannels, addChannel, deleteChannel };
module.exports = {
registerUser,
getUser,
incrementQuota,
addConv,
removeConv,
getConv,
getQuotasSum,
resetQuotas,
};