mod data; use std::sync::Arc; use conduit::{Result, Server}; use data::Data; use database::Database; use ruma::{OwnedRoomId, RoomId}; pub struct Service { db: Data, } impl Service { pub fn build(_server: &Arc, db: &Arc) -> Result { Ok(Self { db: Data::new(db), }) } /// Checks if a room exists. #[tracing::instrument(skip(self))] pub fn exists(&self, room_id: &RoomId) -> Result { self.db.exists(room_id) } #[must_use] pub fn iter_ids<'a>(&'a self) -> Box> + 'a> { self.db.iter_ids() } pub fn is_disabled(&self, room_id: &RoomId) -> Result { 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 { self.db.is_banned(room_id) } pub fn ban_room(&self, room_id: &RoomId, banned: bool) -> Result<()> { self.db.ban_room(room_id, banned) } #[must_use] pub fn list_banned_rooms<'a>(&'a self) -> Box> + 'a> { self.db.list_banned_rooms() } }