Remove RwLock for database
This commit is contained in:
parent
d8f785b0db
commit
062f826d28
15 changed files with 39 additions and 64 deletions
|
@ -41,7 +41,7 @@ async fn main() {
|
||||||
let mut data = client.data.write().await;
|
let mut data = client.data.write().await;
|
||||||
|
|
||||||
data.insert::<Config>(Arc::new(RwLock::new(config)));
|
data.insert::<Config>(Arc::new(RwLock::new(config)));
|
||||||
data.insert::<DataBase>(Arc::new(RwLock::new(db)));
|
data.insert::<DataBase>(Arc::new(db));
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Err(why) = client.start().await {
|
if let Err(why) = client.start().await {
|
||||||
|
@ -69,13 +69,11 @@ impl EventHandler for Handler {
|
||||||
async fn guild_members_chunk(&self, ctx: Context, chunk: GuildMembersChunkEvent) {
|
async fn guild_members_chunk(&self, ctx: Context, chunk: GuildMembersChunkEvent) {
|
||||||
if (chunk.chunk_index + 1) == chunk.chunk_count {
|
if (chunk.chunk_index + 1) == chunk.chunk_count {
|
||||||
println!("Cache built successfully!");
|
println!("Cache built successfully!");
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Config in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Config in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
|
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let config_lock = {
|
let config_lock = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<Config>().expect("Expected Config in TypeMap.").clone()
|
data_read.get::<Config>().expect("Expected Config in TypeMap.").clone()
|
||||||
|
|
|
@ -36,7 +36,7 @@ async fn main() {
|
||||||
let mut data = client.data.write().await;
|
let mut data = client.data.write().await;
|
||||||
|
|
||||||
data.insert::<Config>(Arc::new(RwLock::new(config)));
|
data.insert::<Config>(Arc::new(RwLock::new(config)));
|
||||||
data.insert::<DataBase>(Arc::new(RwLock::new(db)));
|
data.insert::<DataBase>(Arc::new(db));
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Err(why) = client.start().await {
|
if let Err(why) = client.start().await {
|
||||||
|
|
|
@ -38,7 +38,7 @@ async fn main() {
|
||||||
let mut data = client.data.write().await;
|
let mut data = client.data.write().await;
|
||||||
|
|
||||||
data.insert::<Config>(Arc::new(RwLock::new(config)));
|
data.insert::<Config>(Arc::new(RwLock::new(config)));
|
||||||
data.insert::<DataBase>(Arc::new(RwLock::new(db)));
|
data.insert::<DataBase>(Arc::new(db));
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Err(why) = client.start().await {
|
if let Err(why) = client.start().await {
|
||||||
|
|
|
@ -35,7 +35,7 @@ async fn main() {
|
||||||
let mut data = client.data.write().await;
|
let mut data = client.data.write().await;
|
||||||
|
|
||||||
data.insert::<Config>(Arc::new(RwLock::new(config)));
|
data.insert::<Config>(Arc::new(RwLock::new(config)));
|
||||||
data.insert::<DataBase>(Arc::new(RwLock::new(db)));
|
data.insert::<DataBase>(Arc::new(db));
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Err(why) = client.start().await {
|
if let Err(why) = client.start().await {
|
||||||
|
@ -50,11 +50,10 @@ impl EventHandler for Handler {
|
||||||
let ctx = Arc::new(ctx);
|
let ctx = Arc::new(ctx);
|
||||||
println!("{} is connected!", ready.user.name);
|
println!("{} is connected!", ready.user.name);
|
||||||
|
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Config in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Config in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let config_lock = {
|
let config_lock = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
|
|
|
@ -12,8 +12,13 @@ use skynet_discord_bot::{
|
||||||
},
|
},
|
||||||
get_config, Config,
|
get_config, Config,
|
||||||
};
|
};
|
||||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
use std::{
|
||||||
use std::{process, sync::Arc};
|
process,
|
||||||
|
sync::{
|
||||||
|
atomic::{AtomicUsize, Ordering},
|
||||||
|
Arc,
|
||||||
|
},
|
||||||
|
};
|
||||||
use tokio::sync::RwLock;
|
use tokio::sync::RwLock;
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
|
@ -40,7 +45,7 @@ async fn main() {
|
||||||
let mut data = client.data.write().await;
|
let mut data = client.data.write().await;
|
||||||
|
|
||||||
data.insert::<Config>(Arc::new(RwLock::new(config)));
|
data.insert::<Config>(Arc::new(RwLock::new(config)));
|
||||||
data.insert::<DataBase>(Arc::new(RwLock::new(db)));
|
data.insert::<DataBase>(Arc::new(db));
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Err(why) = client.start().await {
|
if let Err(why) = client.start().await {
|
||||||
|
@ -79,13 +84,11 @@ impl EventHandler for Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn check_bulk(ctx: &Context) {
|
async fn check_bulk(ctx: &Context) {
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Config in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Config in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
|
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
for server_config in get_server_config_bulk(&db).await {
|
for server_config in get_server_config_bulk(&db).await {
|
||||||
normal::update_server(ctx, &server_config, &[], &[]).await;
|
normal::update_server(ctx, &server_config, &[], &[]).await;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,11 +56,10 @@ pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
|
||||||
return "Please provide a valid channel for ``Bot Channel``".to_string();
|
return "Please provide a valid channel for ``Bot Channel``".to_string();
|
||||||
};
|
};
|
||||||
|
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let server_data = Servers {
|
let server_data = Servers {
|
||||||
server: command.guild_id.unwrap_or_default(),
|
server: command.guild_id.unwrap_or_default(),
|
||||||
|
|
|
@ -27,11 +27,10 @@ pub mod committee {
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let mut cs = vec![];
|
let mut cs = vec![];
|
||||||
// pull it from a DB
|
// pull it from a DB
|
||||||
|
@ -95,11 +94,10 @@ pub mod servers {
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
pub async fn run(_command: &CommandInteraction, ctx: &Context) -> String {
|
pub async fn run(_command: &CommandInteraction, ctx: &Context) -> String {
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let mut committees = HashMap::new();
|
let mut committees = HashMap::new();
|
||||||
if let Some(x) = get_committees(&db).await {
|
if let Some(x) = get_committees(&db).await {
|
||||||
|
|
|
@ -23,11 +23,10 @@ pub(crate) mod user {
|
||||||
use sqlx::Error;
|
use sqlx::Error;
|
||||||
|
|
||||||
pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
|
pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let config_lock = {
|
let config_lock = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
|
@ -229,11 +228,10 @@ pub(crate) mod server {
|
||||||
return String::from("Expected Server ID");
|
return String::from("Expected Server ID");
|
||||||
};
|
};
|
||||||
|
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
match add_server(&db, &g_id, &server_minecraft).await {
|
match add_server(&db, &g_id, &server_minecraft).await {
|
||||||
Ok(_) => {}
|
Ok(_) => {}
|
||||||
|
@ -290,11 +288,10 @@ pub(crate) mod server {
|
||||||
Some(x) => x,
|
Some(x) => x,
|
||||||
};
|
};
|
||||||
|
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let servers = get_minecraft_config_server(&db, g_id).await;
|
let servers = get_minecraft_config_server(&db, g_id).await;
|
||||||
|
|
||||||
|
@ -366,11 +363,10 @@ pub(crate) mod server {
|
||||||
return String::from("Expected Server ID");
|
return String::from("Expected Server ID");
|
||||||
};
|
};
|
||||||
|
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
data.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
match server_remove(&db, &g_id, &server_minecraft).await {
|
match server_remove(&db, &g_id, &server_minecraft).await {
|
||||||
Ok(_) => {}
|
Ok(_) => {}
|
||||||
|
|
|
@ -62,11 +62,10 @@ pub mod edit {
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let server = command.guild_id.unwrap_or_default();
|
let server = command.guild_id.unwrap_or_default();
|
||||||
let server_data = RoleAdder {
|
let server_data = RoleAdder {
|
||||||
|
|
|
@ -18,11 +18,10 @@ pub(crate) mod admin {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
pub async fn run(_command: &CommandInteraction, ctx: &Context) -> String {
|
pub async fn run(_command: &CommandInteraction, ctx: &Context) -> String {
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let config_lock = {
|
let config_lock = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
|
@ -69,11 +68,10 @@ pub(crate) mod user {
|
||||||
use sqlx::{Pool, Sqlite};
|
use sqlx::{Pool, Sqlite};
|
||||||
|
|
||||||
pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
|
pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let config_toml = get_config_icons::minimal();
|
let config_toml = get_config_icons::minimal();
|
||||||
|
|
||||||
|
@ -145,11 +143,10 @@ pub(crate) mod user {
|
||||||
use sqlx::{Pool, Sqlite};
|
use sqlx::{Pool, Sqlite};
|
||||||
|
|
||||||
pub async fn run(_command: &CommandInteraction, ctx: &Context) -> String {
|
pub async fn run(_command: &CommandInteraction, ctx: &Context) -> String {
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let config_toml = get_config_icons::minimal();
|
let config_toml = get_config_icons::minimal();
|
||||||
|
|
||||||
|
|
|
@ -21,11 +21,10 @@ pub mod link {
|
||||||
use serenity::all::{CommandDataOption, CommandDataOptionValue, CommandInteraction};
|
use serenity::all::{CommandDataOption, CommandDataOptionValue, CommandInteraction};
|
||||||
|
|
||||||
pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
|
pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let config_lock = {
|
let config_lock = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
|
@ -314,11 +313,10 @@ pub mod verify {
|
||||||
use sqlx::Error;
|
use sqlx::Error;
|
||||||
|
|
||||||
pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
|
pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Database in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Database in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
// check if user has used /link_wolves
|
// check if user has used /link_wolves
|
||||||
let details = if let Some(x) = get_verify_from_db(&db, &command.user.id).await {
|
let details = if let Some(x) = get_verify_from_db(&db, &command.user.id).await {
|
||||||
|
@ -494,11 +492,10 @@ pub mod unlink {
|
||||||
use sqlx::{Pool, Sqlite};
|
use sqlx::{Pool, Sqlite};
|
||||||
|
|
||||||
pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
|
pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
// doesn't matter if there is one or not, it will be removed regardless
|
// doesn't matter if there is one or not, it will be removed regardless
|
||||||
delete_link(&db, &command.user.id).await;
|
delete_link(&db, &command.user.id).await;
|
||||||
|
|
|
@ -12,11 +12,10 @@ use sqlx::{
|
||||||
Error, FromRow, Pool, Row, Sqlite,
|
Error, FromRow, Pool, Row, Sqlite,
|
||||||
};
|
};
|
||||||
use std::{str::FromStr, sync::Arc};
|
use std::{str::FromStr, sync::Arc};
|
||||||
use tokio::sync::RwLock;
|
|
||||||
|
|
||||||
pub struct DataBase;
|
pub struct DataBase;
|
||||||
impl TypeMapKey for DataBase {
|
impl TypeMapKey for DataBase {
|
||||||
type Value = Arc<RwLock<Pool<Sqlite>>>;
|
type Value = Arc<Pool<Sqlite>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Deserialize, Serialize)]
|
#[derive(Debug, Clone, Deserialize, Serialize)]
|
||||||
|
|
|
@ -17,13 +17,11 @@ pub mod normal {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn update_server(ctx: &Context, server: &Servers, remove_roles: &[Option<RoleId>], members_changed: &[UserId]) {
|
pub async fn update_server(ctx: &Context, server: &Servers, remove_roles: &[Option<RoleId>], members_changed: &[UserId]) {
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Database in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Database in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
|
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let Servers {
|
let Servers {
|
||||||
server,
|
server,
|
||||||
role_past,
|
role_past,
|
||||||
|
@ -174,13 +172,11 @@ pub mod committee {
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
pub async fn check_committee(ctx: &Context) {
|
pub async fn check_committee(ctx: &Context) {
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Config in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Config in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
|
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let config_lock = {
|
let config_lock = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<Config>().expect("Expected Config in TypeMap.").clone()
|
data_read.get::<Config>().expect("Expected Config in TypeMap.").clone()
|
||||||
|
|
|
@ -69,11 +69,10 @@ pub mod cns {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_wolves(ctx: &Context) {
|
pub async fn get_wolves(ctx: &Context) {
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Database in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Database in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let config_lock = {
|
let config_lock = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
|
@ -224,11 +223,10 @@ pub mod committees {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_cns(ctx: &Context) {
|
pub async fn get_cns(ctx: &Context) {
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Database in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Database in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let config_lock = {
|
let config_lock = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
|
|
10
src/main.rs
10
src/main.rs
|
@ -41,13 +41,11 @@ impl EventHandler for Handler {
|
||||||
|
|
||||||
// handles previously linked accounts joining the server
|
// handles previously linked accounts joining the server
|
||||||
async fn guild_member_addition(&self, ctx: Context, new_member: Member) {
|
async fn guild_member_addition(&self, ctx: Context, new_member: Member) {
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Config in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Config in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
|
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
let config_lock = {
|
let config_lock = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<Config>().expect("Expected Config in TypeMap.").clone()
|
data_read.get::<Config>().expect("Expected Config in TypeMap.").clone()
|
||||||
|
@ -109,13 +107,11 @@ Sign up on [UL Wolves]({}) and go to https://discord.com/channels/{}/{} and use
|
||||||
// handles role updates
|
// handles role updates
|
||||||
async fn guild_member_update(&self, ctx: Context, _old_data: Option<Member>, new_data: Option<Member>, _: GuildMemberUpdateEvent) {
|
async fn guild_member_update(&self, ctx: Context, _old_data: Option<Member>, new_data: Option<Member>, _: GuildMemberUpdateEvent) {
|
||||||
// get config/db
|
// get config/db
|
||||||
let db_lock = {
|
let db = {
|
||||||
let data_read = ctx.data.read().await;
|
let data_read = ctx.data.read().await;
|
||||||
data_read.get::<DataBase>().expect("Expected Config in TypeMap.").clone()
|
data_read.get::<DataBase>().expect("Expected Config in TypeMap.").clone()
|
||||||
};
|
};
|
||||||
|
|
||||||
let db = db_lock.read().await;
|
|
||||||
|
|
||||||
// check if the role changed is part of the ones for this server
|
// check if the role changed is part of the ones for this server
|
||||||
if let Some(x) = new_data {
|
if let Some(x) = new_data {
|
||||||
on_role_change(&db, &ctx, x).await;
|
on_role_change(&db, &ctx, x).await;
|
||||||
|
@ -304,7 +300,7 @@ async fn main() {
|
||||||
let mut data = client.data.write().await;
|
let mut data = client.data.write().await;
|
||||||
|
|
||||||
data.insert::<Config>(Arc::new(RwLock::new(config)));
|
data.insert::<Config>(Arc::new(RwLock::new(config)));
|
||||||
data.insert::<DataBase>(Arc::new(RwLock::new(db)));
|
data.insert::<DataBase>(Arc::new(db));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finally, start a single shard, and start listening to events.
|
// Finally, start a single shard, and start listening to events.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue