aboutsummaryrefslogtreecommitdiff
path: root/server/src/import.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-08-04 09:20:05 +0200
committermetamuffin <metamuffin@disroot.org>2023-08-04 09:20:05 +0200
commit9d283fff3352b970a0dd0cb913e122b4d3c3d342 (patch)
tree1a5d942808c3e3bb21fa984f7100dca53f179262 /server/src/import.rs
parent0332eff48e3dd2bc8be06ecd276030231c74bf51 (diff)
downloadjellything-9d283fff3352b970a0dd0cb913e122b4d3c3d342.tar
jellything-9d283fff3352b970a0dd0cb913e122b4d3c3d342.tar.bz2
jellything-9d283fff3352b970a0dd0cb913e122b4d3c3d342.tar.zst
parallel import
Diffstat (limited to 'server/src/import.rs')
-rw-r--r--server/src/import.rs12
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;