Skip to main content

tuwunel_admin/query/raw/
vals_total.rs

1use futures::StreamExt;
2use tuwunel_core::{
3	Result, at,
4	utils::{
5		stream::{IterStream, ReadyExt, TryIgnore},
6		string::EMPTY,
7	},
8};
9
10use super::with_map_or;
11use crate::admin_command;
12
13#[admin_command]
14pub(super) async fn raw_vals_total(&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		.map(|map| map.raw_stream_prefix(&prefix))
23		.flatten()
24		.ignore_err()
25		.map(at!(1))
26		.map(<[u8]>::len)
27		.ready_fold_default(|acc: usize, len| acc.saturating_add(len));
28
29	self.write_timed_query(query).await
30}