Got addition working with field name types.
This commit is contained in:
parent
027fc322e6
commit
884c3180ec
@ -4243,60 +4243,6 @@ impl DocumentFile {
|
|||||||
records.push(rec);
|
records.push(rec);
|
||||||
}
|
}
|
||||||
records.into()
|
records.into()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
let mut reply = Reply::new();
|
|
||||||
if !holder.is_empty() {
|
|
||||||
let mut oid = Oid::new();
|
|
||||||
while self.docs.contains_key(&oid) {
|
|
||||||
oid = Oid::new();
|
|
||||||
}
|
|
||||||
self.docs.insert(oid, holder);
|
|
||||||
|
|
||||||
self.docs.insert(oid.clone(), holder.clone());
|
|
||||||
for (key, value) in holder.iter() {
|
|
||||||
self.add_to_index(&key, value.clone(), oid.clone());
|
|
||||||
}
|
|
||||||
reply.add(holder);
|
|
||||||
}
|
|
||||||
reply.into()
|
|
||||||
|
|
||||||
let mut holder = Document::new();
|
|
||||||
let doc = addition.get_document();
|
|
||||||
for (key, value) in doc.iter() {
|
|
||||||
match self.validate(key.clone(), Some(value.clone())) {
|
|
||||||
Ok(data) => {
|
|
||||||
holder.add_field(key.clone(), value.clone());
|
|
||||||
}
|
|
||||||
Err(err) => return Self::add_field_to_error(key.to_string(), err).into(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (key, value) in self.docdef.iter() {
|
|
||||||
match holder.get_field(key) {
|
|
||||||
Some(_) => {}
|
|
||||||
None => match self.validate(key, None) {
|
|
||||||
Ok(data) => holder.add_field(key.clone(), data.clone()),
|
|
||||||
Err(err) => return Self::add_field_to_error(key.to_string(), err).into(),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let mut oid = Oid::new();
|
|
||||||
let mut reply = Reply::new();
|
|
||||||
if !holder.is_empty() {
|
|
||||||
while self.docs.contains_key(&oid) {
|
|
||||||
oid = Oid::new();
|
|
||||||
}
|
|
||||||
self.docs.insert(oid.clone(), holder.clone());
|
|
||||||
for (key, value) in holder.iter() {
|
|
||||||
self.add_to_index(&key, value.clone(), oid.clone());
|
|
||||||
}
|
|
||||||
reply.add(holder);
|
|
||||||
}
|
|
||||||
reply.into()
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn delete(&mut self, delete: &Delete) -> MsgAction {
|
fn delete(&mut self, delete: &Delete) -> MsgAction {
|
||||||
@ -4719,9 +4665,44 @@ mod document_files {
|
|||||||
testing(Message::new(doc_name.clone(), Query::new()));
|
testing(Message::new(doc_name.clone(), Query::new()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
#[test]
|
#[test]
|
||||||
fn can_add_multiple_documents() {
|
fn can_add_multiple_documents() {
|
||||||
|
let doc_name = Name::english("multiple".to_string());
|
||||||
|
let mut docdef = DocDef::new(doc_name.clone());
|
||||||
|
let name = Name::english("count".to_string());
|
||||||
|
docdef.add_field(name.clone(), FieldType::Integer);
|
||||||
|
let mut test_doc: TestDocument = docdef.clone().into();
|
||||||
|
test_doc.start();
|
||||||
|
let queue = test_doc.get_queue();
|
||||||
|
let count = 5;
|
||||||
|
for i in 0..count {
|
||||||
|
let mut new_doc = Addition::new();
|
||||||
|
new_doc.add_field(name.clone(), i);
|
||||||
|
queue.send(Message::new(doc_name.clone(), new_doc)).unwrap();
|
||||||
|
test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
|
}
|
||||||
|
queue.send(Message::new(doc_name, Query::new()));
|
||||||
|
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
|
let action = result.get_action();
|
||||||
|
let mut entries: HashSet<i128> = (0..count).collect();
|
||||||
|
match action {
|
||||||
|
MsgAction::Records(output) => {
|
||||||
|
let entry_count: usize = count.try_into().unwrap();
|
||||||
|
assert_eq!(output.len(), entry_count, "should have the same number of entries");
|
||||||
|
for record in output.clone() {
|
||||||
|
let holder = record.get(&name).unwrap();
|
||||||
|
let data = match holder {
|
||||||
|
Field::Integer(item) => item.clone(),
|
||||||
|
_ => unreachable!("got {:?}, should have been integer", holder),
|
||||||
|
};
|
||||||
|
assert!(entries.contains(&data), "did not find {:?} in {:?}", data, entries);
|
||||||
|
enties.remove(&data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => unreachable!("\n\ngot {:?}\n\nshould have been records", action),
|
||||||
|
}
|
||||||
|
assert!(entries.is_empty(), "did not use {:?}", entries);
|
||||||
|
/*
|
||||||
let count = 4;
|
let count = 4;
|
||||||
let mut docdef = DocDef::new();
|
let mut docdef = DocDef::new();
|
||||||
let name = "field";
|
let name = "field";
|
||||||
@ -4743,8 +4724,10 @@ mod document_files {
|
|||||||
MsgAction::Reply(data) => assert_eq!(data.len(), count),
|
MsgAction::Reply(data) => assert_eq!(data.len(), count),
|
||||||
_ => unreachable!("got {:?}: should have been a reply", result.get_action()),
|
_ => unreachable!("got {:?}: should have been a reply", result.get_action()),
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
#[test]
|
#[test]
|
||||||
fn errors_on_wrong_field_name() {
|
fn errors_on_wrong_field_name() {
|
||||||
let (docdef, doc_name) = create_docdef([FieldType::Uuid].to_vec());
|
let (docdef, doc_name) = create_docdef([FieldType::Uuid].to_vec());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user