mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2025-07-02 15:54:36 +02:00
takes a full room ID, evicts all our users from that room, adds room ID to banned room IDs metadata db table, and forbids any new local users from attempting to join it. Signed-off-by: strawberry <strawberry@puppygock.gay>
42 lines
1 KiB
Rust
42 lines
1 KiB
Rust
mod data;
|
|
|
|
pub use data::Data;
|
|
use ruma::{OwnedRoomId, RoomId};
|
|
|
|
use crate::Result;
|
|
|
|
pub struct Service {
|
|
pub db: &'static dyn Data,
|
|
}
|
|
|
|
impl Service {
|
|
/// Checks if a room exists.
|
|
#[tracing::instrument(skip(self))]
|
|
pub fn exists(&self, room_id: &RoomId) -> Result<bool> {
|
|
self.db.exists(room_id)
|
|
}
|
|
|
|
pub fn iter_ids<'a>(&'a self) -> Box<dyn Iterator<Item = Result<OwnedRoomId>> + 'a> {
|
|
self.db.iter_ids()
|
|
}
|
|
|
|
pub fn is_disabled(&self, room_id: &RoomId) -> Result<bool> {
|
|
self.db.is_disabled(room_id)
|
|
}
|
|
|
|
pub fn disable_room(&self, room_id: &RoomId, disabled: bool) -> Result<()> {
|
|
self.db.disable_room(room_id, disabled)
|
|
}
|
|
|
|
pub fn is_banned(&self, room_id: &RoomId) -> Result<bool> {
|
|
self.db.is_banned(room_id)
|
|
}
|
|
|
|
pub fn ban_room(&self, room_id: &RoomId, banned: bool) -> Result<()> {
|
|
self.db.ban_room(room_id, banned)
|
|
}
|
|
|
|
pub fn list_banned_rooms<'a>(&'a self) -> Box<dyn Iterator<Item = Result<OwnedRoomId>> + 'a> {
|
|
self.db.list_banned_rooms()
|
|
}
|
|
}
|