From 9d283fff3352b970a0dd0cb913e122b4d3c3d342 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 4 Aug 2023 09:20:05 +0200 Subject: parallel import --- server/src/import.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'server/src') 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; -- cgit v1.2.3-70-g09d2