const mysql = require('mysql') const { mysql_username, mysql_password } = require('../config.json') // TODO Some of the below functions are unnecessarily repetitious var connection_pool = null async function buildPool(db_name) { if (connection_pool == null) { connection_pool = mysql.createPool({ host: "10.26.48.207", user: mysql_username, password: mysql_password, database: db_name, connectionLimit: 10 }) } } async function isServerRegistered(server_snowflake) { var resultLength = null await connection_pool.query(`SELECT * FROM servers WHERE server_snowflake = ?;`, [server_snowflake], (error, results, fields) => { if (error) { console.log(error) } console.log(results) if(results) { resultLength = results.length } else { resultLength = 0 } }) return resultLength != 0 } async function registerServer(server_snowflake, server_name, server_description) { var sql = `INSERT INTO servers VALUES (?, ?, ?);` var result = null await connection_pool.query(sql, [server_snowflake, server_name, server_description], (error, results, fields) => { if (error) { console.log(error) result = false } else { result = true } }) return result } async function unregisterServer(server_snowflake) { var result = null await connection_pool.query(`DELETE FROM servers WHERE server_snowflake = ?;`, [server_snowflake], (error, results, fields) => { if (error) { console.log(error) result = false } else { result = true } }) return result } async function isChannelRegistered(channel_snowflake) { var resultLength = null await connection_pool.query(`SELECT * FROM channels WHERE channel_snowflake = ?;`, [channel_snowflake], (error, results, fields) => { if (error) { console.log(error) } console.log(results) if(results) { resultLength = results.length } else { resultLength = 0 } }) return resultLength != 0 } async function registerChannel(channel_snowflake, server_snowflake, channel_name) { var sql = `INSERT INTO channels VALUES (?, ?, ?);` var result = null await connection_pool.query(sql, [channel_snowflake, server_snowflake, channel_name], (error, results, fields) => { if (error) { console.log(error) result = false } else { result = true } }) return result } async function isUserRegistered(user_snowflake) { var resultLength = null await connection_pool.query(`SELECT * FROM users WHERE user_snowflake = ?;`, [user_snowflake], (error, results, fields) => { if (error) { console.log(error) } console.log(results) if(results) { resultLength = results.length } else { resultLength = 0 } }) return resultLength != 0 } async function registerUser(user_snowflake, user_name, user_displayname) { var sql = `INSERT INTO users VALUES (?, ?, ?);` var result = null await connection_pool.query(sql, [user_snowflake, user_name, user_displayname], (error, results, fields) => { if (error) { console.log(error) result = false } else { result = true } }) return result } async function registerMessage(message_snowflake, channel_snowflake, user_snowflake, message_content, message_timestamp) { var sql = `INSERT INTO users VALUES (?, ?, ?, ?, ?);` var result = null await connection_pool.query(sql, [message_snowflake, channel_snowflake, user_snowflake, message_content, message_timestamp], (error, results, fields) => { if (error) { console.log(error) result = false } else { result = true } }) return result } module.exports = { buildPool, isServerRegistered, registerServer, unregisterServer, isChannelRegistered, registerChannel, isUserRegistered, registerUser, registerMessage }