tuwunel_admin/query/sending/
parked_rooms.rs1use std::collections::BTreeMap;
2
3use futures::StreamExt;
4use tuwunel_core::{Result, utils::ReadyExt};
5
6use crate::admin_command;
7
8#[admin_command]
9pub(super) async fn sending_parked_rooms(&self) -> Result {
10 let query = async {
11 let parks: Vec<_> = self.services.sending.db.parked().collect().await;
12 let rooms: BTreeMap<_, _> = self
13 .services
14 .short
15 .iter_shortroomids()
16 .ready_filter_map(|(room_id, short)| {
17 let parked = parks.iter().any(|(_, park)| park.room == short);
18
19 parked.then(|| (short, room_id.to_owned()))
20 })
21 .collect()
22 .await;
23
24 parks
25 .into_iter()
26 .map(|(server, park)| (server, rooms.get(&park.room).cloned(), park))
27 .collect::<Vec<_>>()
28 };
29
30 self.write_timed_query(query).await
31}