feat(database/guild): adding the database guild log management
This commit is contained in:
parent
b02cba18ae
commit
4a5536dbe1
1 changed files with 48 additions and 0 deletions
48
src/database/guild.rs
Normal file
48
src/database/guild.rs
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
use sqlx::{
|
||||||
|
PgPool,
|
||||||
|
query_as,
|
||||||
|
query_scalar,
|
||||||
|
};
|
||||||
|
use crate::models::Guild;
|
||||||
|
|
||||||
|
pub enum LogChannel {
|
||||||
|
Bot,
|
||||||
|
Category,
|
||||||
|
Channels,
|
||||||
|
Member,
|
||||||
|
Moderation,
|
||||||
|
Msg,
|
||||||
|
Server,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fn log_select(asked: LogChannel) -> &'static str {
|
||||||
|
match asked {
|
||||||
|
LogChannel::Bot => "log_bot",
|
||||||
|
LogChannel::Category => "log_category",
|
||||||
|
LogChannel::Channels => "log_channels",
|
||||||
|
LogChannel::Member => "log_member",
|
||||||
|
LogChannel::Moderation => "log_mod",
|
||||||
|
LogChannel::Msg => "log_msg",
|
||||||
|
LogChannel::Server => "log_server",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_log(db: &PgPool, guild_id: &str, asked: LogChannel) -> Result<Option<String>, sqlx::Error> {
|
||||||
|
let query: String = format!("SELECT {} FROM guilds WHERE guild_id = $1", log_select(asked));
|
||||||
|
let channel_id: Option<String> = query_scalar(&query)
|
||||||
|
.bind(guild_id)
|
||||||
|
.fetch_optional(db)
|
||||||
|
.await?;
|
||||||
|
Ok(channel_id)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn set_log(db: &PgPool, user_id: &str, asked: LogChannel, value: &str) -> Result<(), sqlx::Error> {
|
||||||
|
let query = format!("UPDATE guilds set {} = $1 WHERE guild_id = $2", log_select(asked));
|
||||||
|
query(&query)
|
||||||
|
.bind(value)
|
||||||
|
.bind(user_id)
|
||||||
|
.execute(db)
|
||||||
|
.await?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue