diff options
author | metamuffin <metamuffin@disroot.org> | 2023-08-04 09:20:05 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-08-04 09:20:05 +0200 |
commit | 9d283fff3352b970a0dd0cb913e122b4d3c3d342 (patch) | |
tree | 1a5d942808c3e3bb21fa984f7100dca53f179262 /server/src | |
parent | 0332eff48e3dd2bc8be06ecd276030231c74bf51 (diff) | |
download | jellything-9d283fff3352b970a0dd0cb913e122b4d3c3d342.tar jellything-9d283fff3352b970a0dd0cb913e122b4d3c3d342.tar.bz2 jellything-9d283fff3352b970a0dd0cb913e122b4d3c3d342.tar.zst |
parallel import
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/import.rs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/server/src/import.rs b/server/src/import.rs index 6ea8268..374c2c7 100644 --- a/server/src/import.rs +++ b/server/src/import.rs @@ -7,6 +7,7 @@ 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 jellyclient::Session; use jellycommon::{AssetLocation, MediaSource, Node, NodePrivate, RemoteImportOptions}; use log::{debug, error, info}; @@ -55,10 +56,17 @@ pub async fn import_path( } }); let identifier = path.file_name().unwrap().to_str().unwrap().to_string(); + + let all = join_all( + children_paths + .into_iter() + .map(|p| import_path(p, db, fed, Some(identifier.clone()))), + ) + .await; + let mut children_ids = Vec::new(); let mut errs = 0; - for p in children_paths { - let k = import_path(p, db, fed, Some(identifier.clone())).await; + for k in all { match k { core::result::Result::Ok((els, errs2)) => { errs += errs2; |