diff --git a/src/admin/query/appservice.rs b/src/admin/query/appservice.rs index 7331462a..77ac9641 100644 --- a/src/admin/query/appservice.rs +++ b/src/admin/query/appservice.rs @@ -22,7 +22,7 @@ pub(super) async fn appservice(subcommand: Appservice) -> Result { let timer = tokio::time::Instant::now(); - let results = services().appservice.db.all(); + let results = services().appservice.all(); let query_time = timer.elapsed(); Ok(RoomMessageEventContent::notice_markdown(format!( diff --git a/src/admin/query/room_alias.rs b/src/admin/query/room_alias.rs index 3262303a..2d3b10ce 100644 --- a/src/admin/query/room_alias.rs +++ b/src/admin/query/room_alias.rs @@ -10,7 +10,7 @@ pub(super) async fn room_alias(subcommand: RoomAlias) -> Result { let timer = tokio::time::Instant::now(); - let results = services().rooms.alias.db.resolve_local_alias(&alias); + let results = services().rooms.alias.resolve_local_alias(&alias); let query_time = timer.elapsed(); Ok(RoomMessageEventContent::notice_markdown(format!( @@ -21,7 +21,7 @@ pub(super) async fn room_alias(subcommand: RoomAlias) -> Result { let timer = tokio::time::Instant::now(); - let results = services().rooms.alias.db.local_aliases_for_room(&room_id); + let results = services().rooms.alias.local_aliases_for_room(&room_id); let query_time = timer.elapsed(); let aliases: Vec<_> = results.collect(); @@ -32,7 +32,7 @@ pub(super) async fn room_alias(subcommand: RoomAlias) -> Result { let timer = tokio::time::Instant::now(); - let results = services().rooms.alias.db.all_local_aliases(); + let results = services().rooms.alias.all_local_aliases(); let query_time = timer.elapsed(); let aliases: Vec<_> = results.collect(); diff --git a/src/service/appservice/data.rs b/src/service/appservice/data.rs index 52c89454..40e641a1 100644 --- a/src/service/appservice/data.rs +++ b/src/service/appservice/data.rs @@ -51,17 +51,4 @@ impl Data { .map_err(|_| Error::bad_database("Invalid id bytes in id_appserviceregistrations.")) }))) } - - pub fn all(&self) -> Result> { - self.iter_ids()? - .filter_map(Result::ok) - .map(move |id| { - Ok(( - id.clone(), - self.get_registration(&id)? - .expect("iter_ids only returns appservices that exist"), - )) - }) - .collect() - } } diff --git a/src/service/appservice/mod.rs b/src/service/appservice/mod.rs index 05bc7675..916e7df3 100644 --- a/src/service/appservice/mod.rs +++ b/src/service/appservice/mod.rs @@ -124,7 +124,7 @@ impl Service { let mut registration_info = BTreeMap::new(); let db = Data::new(db); // Inserting registrations into cache - for appservice in db.all()? { + for appservice in iter_ids(&db)? { registration_info.insert( appservice.0, appservice @@ -140,6 +140,8 @@ impl Service { }) } + pub fn all(&self) -> Result> { iter_ids(&self.db) } + /// Registers an appservice and returns the ID to the caller pub async fn register_appservice(&self, yaml: Registration) -> Result { //TODO: Check for collisions between exclusive appservice namespaces @@ -231,3 +233,16 @@ impl Service { self.registration_info.read() } } + +fn iter_ids(db: &Data) -> Result> { + db.iter_ids()? + .filter_map(Result::ok) + .map(move |id| { + Ok(( + id.clone(), + db.get_registration(&id)? + .expect("iter_ids only returns appservices that exist"), + )) + }) + .collect() +}