woomy-v2/bot/util/database.js

121 lines
3.4 KiB
JavaScript
Raw Normal View History

2020-10-17 05:00:52 +00:00
/* eslint-disable no-unused-vars */
2020-10-17 01:16:27 +00:00
2020-10-17 05:00:52 +00:00
const { Pool } = require('pg');
const format = require('pg-format');
2020-10-17 07:28:47 +00:00
const { level } = require('winston');
2020-10-17 05:00:52 +00:00
const { pgCredentials } = require('../../config.json');
2020-10-17 01:16:27 +00:00
class Database {
2020-10-17 05:17:02 +00:00
constructor (client) {
2020-10-17 01:16:27 +00:00
this.client = client;
2020-10-17 05:00:52 +00:00
this.pool = new Pool(pgCredentials);
2020-10-17 07:28:47 +00:00
this.pool.on('error', err => {
this.client.logger.error('Postgres error: ' + err);
});
2020-10-17 05:00:52 +00:00
}
2020-10-17 01:16:27 +00:00
async getGuild (id) {
2020-10-17 05:17:02 +00:00
const res = await this.pool.query('SELECT * FROM guilds WHERE guild_id = $1;', [id]);
2020-10-17 05:00:52 +00:00
return res.rows[0];
}
async getMember (guild_id, user_id) {
const key = guild_id + ':' + user_id;
2020-10-17 05:17:02 +00:00
const res = await this.pool.query('SELECT * FROM members WHERE member_id = $1;', [key]);
2020-10-17 05:00:52 +00:00
return res.rows[0];
}
2020-10-17 01:16:27 +00:00
2020-10-17 05:00:52 +00:00
async getUser (id) {
const res = await this.pool.query('SELECT * FROM users WHERE user_id = $1;', [id]);
2020-10-17 05:00:52 +00:00
return res.rows[0];
}
2020-10-17 01:16:27 +00:00
2020-10-17 07:28:47 +00:00
async getGuildField (id, column) {
const sql = format('SELECT %I FROM guilds WHERE guild_id = $1;', column);
const query = {
text: sql,
values: [id],
rowMode: 'array'
};
const res = await this.pool.query(query);
return res.rows[0][0];
}
async getMemberField (guild_id, user_id, column) {
const key = guild_id + ':' + user_id;
const sql = format('SELECT %I FROM members WHERE member_id = $1;', column);
const query = {
text: sql,
values: [key],
rowMode: 'array'
};
const res = await this.pool.query(query);
return res.rows[0][0];
}
async getUserField (id, column) {
const sql = format('SELECT %I FROM users WHERE user_id = $1;', column);
const query = {
text: sql,
values: [id],
rowMode: 'array'
};
const res = await this.pool.query(query);
return res.rows[0][0];
}
2020-10-17 05:00:52 +00:00
async updateGuild (id, column, newValue) {
const sql = format('UPDATE guilds SET %I = $1 WHERE guild_id = $2;', column);
2020-10-17 07:28:47 +00:00
await this.pool.query(sql, [newValue, id]);
2020-10-17 05:00:52 +00:00
return;
}
2020-10-17 01:16:27 +00:00
2020-10-17 05:00:52 +00:00
async updateMember (guild_id, user_id, column, newValue) {
const key = guild_id + ':' + user_id;
const sql = format('UPDATE members SET %I = $1 WHERE member_id = $2;', column);
await this.pool.query(sql, [newValue, key]);
return;
}
2020-10-17 01:16:27 +00:00
2020-10-17 05:00:52 +00:00
async updateUser (id, column, newValue) {
const sql = format('UPDATE users SET %I = $1 WHERE user_id = $2;', column);
await this.pool.query(sql, [newValue, id]);
return;
}
async resetGuild (id) {
}
async resetMember (guild_id, member_id) {
}
async resetUser (id) {
}
async deleteGuild (id) {
await this.pool.query('DELETE FROM guilds WHERE guild_id = $1;', [id]);
await this.pool.query('DELETE FROM members WHERE member_id LIKE $1;', [`${id}%`]);
}
2020-10-17 01:16:27 +00:00
2020-10-17 05:00:52 +00:00
async deleteMember (guild_id, user_id) {
const key = guild_id + ':' + user_id;
await this.pool.query('DELETE FROM members WHERE member_id = $1;', [key]);
}
2020-10-17 01:16:27 +00:00
2020-10-17 05:00:52 +00:00
async deleteUser (id) {
await this.pool.query('DELETE FROM users WHERE user_id = $1;', [id]);
await this.pool.query('DELETE FROM members WHERE member_id LIKE $1;', [`${id}%`]);
}
}
2020-10-17 01:16:27 +00:00
module.exports = Database;