Migrate guild members to its own collection, +rout

This commit is contained in:
Paul Makles
2020-04-10 21:06:46 +01:00
parent 51ff6aa983
commit b6772143bc
6 changed files with 191 additions and 56 deletions

View File

@@ -24,7 +24,6 @@ pub struct Guild {
pub owner: String,
pub channels: Vec<String>,
pub members: Vec<Member>,
pub invites: Vec<Invite>,
pub default_permissions: u32,

View File

@@ -4,12 +4,12 @@ use bson::doc;
use mongodb::options::{FindOneOptions, FindOptions};
pub fn find_mutual_guilds(user_id: &str, target_id: &str) -> Vec<String> {
let col = get_collection("guilds");
let col = get_collection("members");
if let Ok(result) = col.find(
doc! {
"$and": [
{ "members": { "$elemMatch": { "id": user_id } } },
{ "members": { "$elemMatch": { "id": target_id } } },
{ "id": user_id },
{ "id": target_id },
]
},
FindOptions::builder().projection(doc! { "_id": 1 }).build(),

View File

@@ -1,4 +1,5 @@
use super::mutual::has_mutual_connection;
use crate::database::get_collection;
use crate::database::user::UserRelationship;
use crate::guards::auth::UserRef;
use crate::guards::channel::ChannelRef;
@@ -32,6 +33,7 @@ pub enum Permission {
ManageChannels = 128,
ManageServer = 256,
ManageRoles = 512,
SendDirectMessages = 1024,
}
bitfield! {
@@ -47,6 +49,7 @@ bitfield! {
pub get_manage_channels, set_manage_channels: 24;
pub get_manage_server, set_manage_server: 23;
pub get_manage_roles, set_manage_roles: 22;
pub get_send_direct_messages, set_send_direct_messages: 21;
}
pub fn get_relationship_internal(
@@ -134,21 +137,20 @@ impl PermissionCalculator {
let mut permissions: u32 = 0;
if let Some(guild) = guild {
if let Some(_data) = guild.fetch_data_given(
if let Ok(result) = get_collection("members").find_one(
doc! {
"members": {
"$elemMatch": {
"id": &self.user.id,
}
}
"_id.user": &self.user.id,
"_id.guild": &guild.id,
},
doc! {},
None,
) {
if guild.owner == self.user.id {
return u32::MAX;
}
if result.is_some() {
if guild.owner == self.user.id {
return u32::MAX;
}
permissions = guild.default_permissions as u32;
permissions = guild.default_permissions as u32;
}
}
}