mirror of
https://github.com/stoatchat/stoatchat.git
synced 2026-07-14 13:36:59 +00:00
Migrate guild members to its own collection, +rout
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user