generated from lucien/api-template
149 lines
3.7 KiB
JavaScript
149 lines
3.7 KiB
JavaScript
const mysql = require("mysql");
|
|
|
|
function getConnection() {
|
|
return mysql.createConnection({
|
|
host: process.env.MYSQL_HOST,
|
|
user: process.env.MYSQL_USER,
|
|
password: process.env.MYSQL_PASSWORD,
|
|
database: process.env.MYSQL_DATABASE,
|
|
});
|
|
}
|
|
|
|
function getUser(connection, id) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`SELECT * FROM users WHERE id = ${id}`,
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function getUserByUsername(connection, username) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`SELECT * FROM users WHERE username = '${username}'`,
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function addUser(connection, username, password) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`INSERT INTO users (username, password) VALUES ('${username}', '${password}')`,
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function getChannels(connection) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`SELECT * FROM channels`,
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function getChannel(connection, name) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`SELECT channels.id, name, description, owner_id, username AS owner_username FROM channels JOIN users ON channels.owner_id = users.id WHERE name = "${name}"`,
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function addChannel(connection, name, description, owner_id) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`INSERT INTO channels (name, description, owner_id) VALUES ('${name}', '${description}', ${owner_id})`,
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function getMessages(connection, channel_id) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`SELECT messages.id, user_id, username, content, date FROM messages JOIN users ON messages.user_id = users.id WHERE channel_id = ${channel_id} ORDER BY date DESC`,
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function addMessage(connection, channel_id, user_id, message) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`INSERT INTO messages (channel_id, user_id, content, date) VALUES (${channel_id}, ${user_id}, "${message}", ${Math.floor(Date.now() / 1000)})`,
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
function deleteMessage(connection, message_id) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(
|
|
`DELETE FROM messages WHERE id = ${message_id}`,
|
|
(error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
resolve(result);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
getConnection,
|
|
getUser,
|
|
getUserByUsername,
|
|
addUser,
|
|
getChannels,
|
|
getChannel,
|
|
addChannel,
|
|
getMessages,
|
|
addMessage,
|
|
deleteMessage
|
|
};
|