Skip to main content

tuwunel_admin/query/sending/
parked_rooms.rs

1use 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}