207 lines
5.2 KiB
TypeScript
207 lines
5.2 KiB
TypeScript
import * as mysql from "npm:mysql";
|
|
|
|
export interface User {
|
|
id: number,
|
|
username: string,
|
|
userid: string,
|
|
quota: number,
|
|
}
|
|
|
|
export async function connectToDb(): Promise<mysql.Connection> {
|
|
return new Promise((resolve, reject) => {
|
|
const connection: mysql.Connection = mysql.createConnection({
|
|
host: process.env.MYSQL_HOST,
|
|
user: process.env.MYSQL_USER,
|
|
password: process.env.MYSQL_PASSWORD,
|
|
database: process.env.MYSQL_DATABASE,
|
|
})
|
|
|
|
connection.connect((error) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(connection);
|
|
});
|
|
})
|
|
}
|
|
|
|
export async function addUser(connection: mysql.Connection, username: string, userid: string): Promise<any> {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(`INSERT INTO users (username, userid, quota) VALUES ("${username}", "${userid}", 0)`, (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result);
|
|
})
|
|
})
|
|
}
|
|
|
|
export async function getUser(connection: mysql.Connection, userid: string): Promise<User[]> {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(`SELECT * FROM users WHERE userid = "${userid}"`, (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result);
|
|
})
|
|
})
|
|
}
|
|
|
|
export async function incrementQuota(connection: mysql.Connection, userid: string, value: number): Promise<any> {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(`UPDATE users SET quota = quota + ${value} WHERE userid = "${userid}"`, (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result);
|
|
})
|
|
})
|
|
}
|
|
|
|
export function resetQuota(connection: mysql.Connection) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(`UPDATE users SET quota = 0`, (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result);
|
|
})
|
|
})
|
|
}
|
|
|
|
export function getGuild(connection: mysql.Connection, guild_id: string): Promise<any[]> {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(`SELECT * FROM guilds WHERE guild_id = "${guild_id}"`, (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result);
|
|
})
|
|
})
|
|
}
|
|
|
|
export function addGuild(connection: mysql.Connection, guild_id: string) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(`INSERT INTO guilds (guild_id) VALUES ("${guild_id}")`, (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result);
|
|
})
|
|
})
|
|
}
|
|
|
|
export function setAdminRole(connection: mysql.Connection, guild_id: string, role_id: string) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(`UPDATE guilds SET admin_role_id = "${role_id}" WHERE guild_id = "${guild_id}"`, (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result);
|
|
})
|
|
})
|
|
}
|
|
|
|
export function setFeature(connection: mysql.Connection, guild_id: string, feature: string, code: string) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(`UPDATE guilds SET ${feature} = ${code} WHERE guild_id = "${guild_id}"`, (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result);
|
|
})
|
|
})
|
|
}
|
|
|
|
export function getWelcomeConfig(connection: mysql.Connection, guild_id: string): Promise<any[]> {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(`SELECT * FROM welcome_config WHERE guild_id = "${guild_id}"`, (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result);
|
|
})
|
|
})
|
|
}
|
|
|
|
export function getByeConfig(connection: mysql.Connection, guild_id: string): Promise<any[]> {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(`SELECT * FROM bye_config WHERE guild_id = "${guild_id}"`, (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result);
|
|
})
|
|
})
|
|
}
|
|
|
|
export function addWelcomeConfig(connection: mysql.Connection, guild_id: string) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(`INSERT INTO welcome_config (guild_id) VALUES ("${guild_id}")`, (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result);
|
|
})
|
|
})
|
|
}
|
|
|
|
export function addByeConfig(connection: mysql.Connection, guild_id: string) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(`INSERT INTO bye_config (guild_id) VALUES ("${guild_id}")`, (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result);
|
|
})
|
|
})
|
|
}
|
|
|
|
export function setFeatureProperty(connection: mysql.Connection, guild_id: String, feature: string, property: string, value: string) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(`UPDATE ${feature} SET ${property} = "${value}" WHERE guild_id = "${guild_id}"`, (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result);
|
|
})
|
|
})
|
|
}
|
|
|
|
export function getLastReset(connection: mysql.Connection) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query("SELECT MAX(date) AS date FROM resets", (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result)
|
|
})
|
|
})
|
|
}
|
|
|
|
export function addReset(connection: mysql.Connection, date: number) {
|
|
return new Promise((resolve, reject) => {
|
|
connection.query(`INSERT INTO resets (date) VALUES (${date})`, (error, result) => {
|
|
if (error) {
|
|
reject(new Error(error));
|
|
}
|
|
|
|
resolve(result)
|
|
})
|
|
})
|
|
}
|