From 55297ef09799dc3986932c5528cfa145a04098cf Mon Sep 17 00:00:00 2001 From: Jeff Baskin Date: Tue, 9 Sep 2025 09:05:38 -0400 Subject: [PATCH] Unique id only added when successful. --- src/message.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/message.rs b/src/message.rs index fe43dca..34a65cc 100644 --- a/src/message.rs +++ b/src/message.rs @@ -1844,7 +1844,6 @@ impl DocumentFile { Ok(field_info) => match field_info.check(Some(value.clone())) { Ok(data) => { holder.add_field(key.clone(), value.clone()); - field_info.use_unique_value(value.clone()); } Err(err) => return err.into(), }, @@ -1873,6 +1872,9 @@ impl DocumentFile { oid = Oid::new(); } self.docs.insert(oid, holder.clone()); + for (key, value) in holder.iter() { + self.docdef.use_unique_value(key, value.clone()); + } let mut reply = Reply::new(); reply.add(holder); reply.into() @@ -2756,6 +2758,7 @@ mod document_files { } } + #[test] fn unique_value_remains_available_if_failure_occurs() { let (mut docdef, doc_name) = create_docdef([FieldType::Uuid, FieldType::Uuid].to_vec()); docdef.set_unique("field0"); @@ -2770,7 +2773,7 @@ mod document_files { let mut good_addition = Addition::new(); good_addition.add_field("field0".to_string(), field0.clone()); good_addition.add_field("field1".to_string(), field0.clone()); - let msg = Message::new(doc_name.clone(), bad_addition.clone()); + let msg = Message::new(doc_name.clone(), good_addition.clone()); queue.send(msg).unwrap(); let result = rx.recv_timeout(TIMEOUT).unwrap(); let action = result.get_action();