diff options
author | metamuffin <metamuffin@disroot.org> | 2023-12-15 16:37:11 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-12-15 16:37:11 +0100 |
commit | 69041b4a9de26719254ea4eff5555a079d5e7d55 (patch) | |
tree | 39b297f938b5a19de2fd3244111a43f03b69465f | |
parent | 17dd13d00343e21f73eb2e223dfc1f35bd1afcd8 (diff) | |
download | jellything-69041b4a9de26719254ea4eff5555a079d5e7d55.tar jellything-69041b4a9de26719254ea4eff5555a079d5e7d55.tar.bz2 jellything-69041b4a9de26719254ea4eff5555a079d5e7d55.tar.zst |
no double import
-rw-r--r-- | server/src/import.rs | 19 |
1 files changed, 14 insertions, 5 deletions
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![] }) } |