Skip to main content

tuwunel_admin/query/storage/
delete.rs

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