From 69041b4a9de26719254ea4eff5555a079d5e7d55 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 15 Dec 2023 16:37:11 +0100 Subject: no double import --- server/src/import.rs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'server/src') diff --git a/server/src/import.rs b/server/src/import.rs index edf3eb0..55d1a32 100644 --- a/server/src/import.rs +++ b/server/src/import.rs @@ -129,8 +129,12 @@ pub async fn import_path( debug!("adding {identifier}"); node.public.path = node_path; node.public.id = Some(identifier.to_owned()); - db.node.insert(&identifier, &node)?; - vec![identifier] + let did_insert = db.node.insert(&identifier, &node)?.is_none(); + if did_insert { + vec![identifier] + } else { + vec![] + } }; Ok((idents, 0)) } else { @@ -168,6 +172,7 @@ async fn import_remote( drop(_permit); + let mut did_insert = false; if !flatten { let mut node = Node { public: node.clone(), @@ -191,8 +196,10 @@ async fn import_remote( debug!("adding {identifier}"); node.public.id = Some(identifier.to_owned()); - db.node - .fetch_and_update(&identifier, |pnode| Some(pnode.unwrap_or(node.clone())))?; + did_insert = db + .node + .fetch_and_update(&identifier, |pnode| Some(pnode.unwrap_or(node.clone())))? + .is_none(); node_path.push(opts.id.clone()); } @@ -220,8 +227,10 @@ async fn import_remote( } Ok(if flatten { children_idents - } else { + } else if did_insert { vec![identifier] + } else { + vec![] }) } -- cgit v1.2.3-70-g09d2