perf: clone Arc of data.database

This commit is contained in:
oSumAtrIX 2022-08-25 03:36:23 +02:00
parent 8840a65c94
commit 3ad345b009
No known key found for this signature in database
GPG Key ID: A9B3094ACDB604B4
5 changed files with 22 additions and 21 deletions

View File

@ -1,4 +1,4 @@
pub mod configuration; pub mod configuration;
pub mod misc;
pub mod moderation; pub mod moderation;
pub mod utils; pub mod utils;
pub mod misc;

View File

@ -30,7 +30,7 @@ pub async fn unmute(
&ctx, &ctx,
ModerationKind::Unmute( ModerationKind::Unmute(
queue_unmute_member( queue_unmute_member(
ctx.discord(), &ctx.discord().http,
&data.database, &data.database,
&member, &member,
configuration.general.mute.role, configuration.general.mute.role,
@ -161,7 +161,7 @@ pub async fn mute(
data.pending_unmutes.insert( data.pending_unmutes.insert(
member.user.id.0, member.user.id.0,
queue_unmute_member( queue_unmute_member(
ctx.discord(), &ctx.discord().http,
&data.database, &data.database,
&member, &member,
mute_role_id, mute_role_id,
@ -303,11 +303,7 @@ pub async fn ban(
.unwrap(); .unwrap();
let ban_result = member let ban_result = member
.ban_with_reason( .ban_with_reason(&ctx.discord().http, cmp::min(dmd.unwrap_or(0), 7), reason)
&ctx.discord().http,
cmp::min(dmd.unwrap_or(0), 7),
reason,
)
.await; .await;
let embed_color = ctx.data().read().await.configuration.general.embed_color; let embed_color = ctx.data().read().await.configuration.general.embed_color;

View File

@ -39,7 +39,7 @@ pub async fn load_muted_members(ctx: &serenity::Context, _: &serenity::Ready) {
data.pending_unmutes.insert( data.pending_unmutes.insert(
member.user.id.0, member.user.id.0,
queue_unmute_member( queue_unmute_member(
ctx, &ctx.http,
&data.database, &data.database,
&member, &member,
mute_role_id, mute_role_id,

View File

@ -28,7 +28,7 @@ impl serenity::TypeMapKey for Data {
pub struct Data { pub struct Data {
configuration: Configuration, configuration: Configuration,
database: Database, database: Arc<Database>,
pending_unmutes: HashMap<u64, JoinHandle<Option<Error>>>, pending_unmutes: HashMap<u64, JoinHandle<Option<Error>>>,
} }
@ -67,12 +67,14 @@ async fn main() {
let data = Arc::new(RwLock::new(Data { let data = Arc::new(RwLock::new(Data {
configuration, configuration,
database: Database::new( database: Arc::new(
&env::var("MONGODB_URI").expect("MONGODB_URI environment variable not set"), Database::new(
"revanced_discord_bot", &env::var("MONGODB_URI").expect("MONGODB_URI environment variable not set"),
) "revanced_discord_bot",
.await )
.unwrap(), .await
.unwrap(),
),
pending_unmutes: HashMap::new(), pending_unmutes: HashMap::new(),
})); }));

View File

@ -1,3 +1,6 @@
use std::sync::Arc;
use poise::serenity_prelude::Http;
use tokio::task::JoinHandle; use tokio::task::JoinHandle;
use super::*; use super::*;
@ -11,13 +14,13 @@ pub enum ModerationKind {
} }
pub fn queue_unmute_member( pub fn queue_unmute_member(
ctx: &serenity::Context, http: &Arc<Http>,
database: &Database, database: &Arc<Database>,
member: &Member, member: &Member,
mute_role_id: u64, mute_role_id: u64,
mute_duration: u64, mute_duration: u64,
) -> JoinHandle<Option<Error>> { ) -> JoinHandle<Option<Error>> {
let ctx = ctx.clone(); let http = http.clone();
let database = database.clone(); let database = database.clone();
let mut member = member.clone(); let mut member = member.clone();
@ -46,9 +49,9 @@ pub fn queue_unmute_member(
.map(|r| RoleId::from(r.parse::<u64>().unwrap())) .map(|r| RoleId::from(r.parse::<u64>().unwrap()))
.collect::<Vec<_>>(); .collect::<Vec<_>>();
if let Err(add_role_result) = member.add_roles(&ctx.http, &taken_roles).await { if let Err(add_role_result) = member.add_roles(&http, &taken_roles).await {
Some(Error::from(add_role_result)) Some(Error::from(add_role_result))
} else if let Err(remove_result) = member.remove_role(ctx.http, mute_role_id).await { } else if let Err(remove_result) = member.remove_role(http, mute_role_id).await {
Some(Error::from(remove_result)) Some(Error::from(remove_result))
} else { } else {
None None