149 lines
No EOL
4.7 KiB
JavaScript
149 lines
No EOL
4.7 KiB
JavaScript
const mysql = require('mysql');
|
|
|
|
const connection = mysql.createConnection({
|
|
host: "localhost",
|
|
user: "root",
|
|
password: process.env.MYSQL,
|
|
database: "discord"
|
|
});
|
|
|
|
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 {
|
|
resolve();
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
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 usersInDb() {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query('SELECT userid FROM users', (error, results, fields) => {
|
|
if (error) {
|
|
reject(error);
|
|
} else {
|
|
users = [];
|
|
results.forEach(element => {
|
|
users.push(element.userid);
|
|
});
|
|
resolve(users);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
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 (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 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 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 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 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);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
module.exports = { addUserToDb, incrementQuota, usersInDb, getQuota, addConv, delConv, getConvs, addMessage, getMessages }; |