diff options
author | tpart <tpart120@proton.me> | 2023-08-05 19:49:12 +0200 |
---|---|---|
committer | tpart <tpart120@proton.me> | 2023-08-05 19:49:12 +0200 |
commit | b22f639737e2ee0152969e2106869538a3009ce6 (patch) | |
tree | df40af2ec87c390c75cdc05470481fec92c73559 /server/src/import.rs | |
parent | 06688775bc7bffaf96be3891a936aba32021bd57 (diff) | |
parent | 042f41a8750de8c0d2ecf30d147a62f03f758e3e (diff) | |
download | jellything-b22f639737e2ee0152969e2106869538a3009ce6.tar jellything-b22f639737e2ee0152969e2106869538a3009ce6.tar.bz2 jellything-b22f639737e2ee0152969e2106869538a3009ce6.tar.zst |
Merge branch 'master' of https://codeberg.org/metamuffin/jellything
Diffstat (limited to 'server/src/import.rs')
-rw-r--r-- | server/src/import.rs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/server/src/import.rs b/server/src/import.rs index d72690c..872681f 100644 --- a/server/src/import.rs +++ b/server/src/import.rs @@ -7,7 +7,11 @@ use crate::{database::Database, federation::Federation, CONF}; use anyhow::{anyhow, bail, Context, Ok}; use async_recursion::async_recursion; use base64::Engine; -use futures::future::join_all; +use futures::{ + future::join_all, + stream::{FuturesOrdered, FuturesUnordered}, + StreamExt, +}; use jellyclient::Session; use jellycommon::{AssetLocation, MediaSource, Node, NodePrivate, RemoteImportOptions}; use log::{debug, error, info}; @@ -63,16 +67,14 @@ pub async fn import_path( .ok_or(anyhow!("non-root node requires parent"))? }; - let all = join_all( - children_paths - .into_iter() - .map(|p| import_path(p, db, fed, Some(identifier.clone()))), - ) - .await; + let mut all: FuturesUnordered<_> = children_paths + .into_iter() + .map(|p| import_path(p, db, fed, Some(identifier.clone()))) + .collect(); let mut children_ids = Vec::new(); let mut errs = 0; - for k in all { + while let Some(k) = all.next().await { match k { core::result::Result::Ok((els, errs2)) => { errs += errs2; |