revolt_database/models/server_bans/ops/
mongodb.rs1use revolt_result::Result;
2
3use crate::MongoDb;
4use crate::{MemberCompositeKey, ServerBan};
5
6use super::AbstractServerBans;
7
8static COL: &str = "server_bans";
9
10#[async_trait]
11impl AbstractServerBans for MongoDb {
12 async fn insert_ban(&self, ban: &ServerBan) -> Result<()> {
14 query!(self, insert_one, COL, &ban).map(|_| ())
15 }
16
17 async fn fetch_ban(&self, server_id: &str, user_id: &str) -> Result<ServerBan> {
19 query!(
20 self,
21 find_one,
22 COL,
23 doc! {
24 "_id.server": server_id,
25 "_id.user": user_id
26 }
27 )?
28 .ok_or_else(|| create_error!(NotFound))
29 }
30
31 async fn fetch_bans(&self, server_id: &str) -> Result<Vec<ServerBan>> {
33 query!(
34 self,
35 find,
36 COL,
37 doc! {
38 "_id.server": server_id
39 }
40 )
41 }
42
43 async fn delete_ban(&self, id: &MemberCompositeKey) -> Result<()> {
45 query!(
46 self,
47 delete_one,
48 COL,
49 doc! {
50 "_id.server": &id.server,
51 "_id.user": &id.user
52 }
53 )
54 .map(|_| ())
55 }
56}