tuwunel_admin/query/raw/
vals_total.rs1use 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}