tuwunel_admin/query/storage/
delete.rs1use futures::{FutureExt, StreamExt};
2use tuwunel_core::{
3 Result,
4 utils::{result::LogErr, stream::IterStream},
5};
6
7use crate::admin_command;
8
9#[admin_command]
10pub(super) async fn query_storage_delete(
11 &self,
12 provider: Option<String>,
13 src: Vec<String>,
14 verbose: bool,
15) -> Result {
16 let id = provider.as_deref().unwrap_or_default();
17 let provider = self.services.storage.provider(id)?;
18
19 provider
20 .delete(src.into_iter().stream())
21 .for_each(async |result| {
22 match result {
23 | Ok(_) if !verbose => Ok(()),
24 | Ok(path) => write!(self, "deleted {path}\n").await,
25 | Err(e) => write!(self, "failed: {e:?}\n").await,
26 }
27 .log_err()
28 .ok();
29 })
30 .map(Ok)
31 .await
32}