aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-12-15 16:37:11 +0100
committermetamuffin <metamuffin@disroot.org>2023-12-15 16:37:11 +0100
commit69041b4a9de26719254ea4eff5555a079d5e7d55 (patch)
tree39b297f938b5a19de2fd3244111a43f03b69465f /server/src
parent17dd13d00343e21f73eb2e223dfc1f35bd1afcd8 (diff)
downloadjellything-69041b4a9de26719254ea4eff5555a079d5e7d55.tar
jellything-69041b4a9de26719254ea4eff5555a079d5e7d55.tar.bz2
jellything-69041b4a9de26719254ea4eff5555a079d5e7d55.tar.zst
no double import
Diffstat (limited to 'server/src')
-rw-r--r--server/src/import.rs19
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![]
})
}