Skip to main content

tuwunel_admin/query/raw/
count.rs

1use futures::StreamExt;
2use tuwunel_core::{
3	Result,
4	utils::{
5		stream::{IterStream, ReadyExt},
6		string::EMPTY,
7	},
8};
9
10use super::with_map_or;
11use crate::admin_command;
12
13#[admin_command]
14pub(super) async fn raw_count(&self, map: Option<String>, prefix: Option<String>) -> Result {
15	let prefix = prefix.as_deref().unwrap_or(EMPTY);
16
17	let maps = with_map_or(map.as_deref(), self.services)?;
18
19	let query = maps
20		.iter()
21		.stream()
22		.then(|map| map.raw_count_prefix(&prefix))
23		.ready_fold(0_usize, usize::saturating_add);
24
25	self.write_timed_query(query).await
26}