Moved update into action module.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 0s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 0s
This commit is contained in:
parent
d47124656f
commit
f1eb397d3b
@ -7,6 +7,7 @@ mod query;
|
|||||||
mod reply;
|
mod reply;
|
||||||
mod request_data;
|
mod request_data;
|
||||||
mod show;
|
mod show;
|
||||||
|
mod update;
|
||||||
mod user;
|
mod user;
|
||||||
|
|
||||||
pub use crate::document::{DocDef, Field, FieldType, Records};
|
pub use crate::document::{DocDef, Field, FieldType, Records};
|
||||||
@ -19,4 +20,5 @@ pub use query::Query;
|
|||||||
pub use reply::Reply;
|
pub use reply::Reply;
|
||||||
use request_data::RequestData;
|
use request_data::RequestData;
|
||||||
pub use show::Show;
|
pub use show::Show;
|
||||||
|
pub use update::Update;
|
||||||
pub use user::UserAction;
|
pub use user::UserAction;
|
||||||
|
|||||||
@ -1,8 +1,5 @@
|
|||||||
use crate::{
|
|
||||||
name::NameType,
|
|
||||||
message::MessageAction,
|
|
||||||
};
|
|
||||||
use super::Query;
|
use super::Query;
|
||||||
|
use crate::{message::MessageAction, name::NameType};
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct Delete {
|
pub struct Delete {
|
||||||
@ -11,7 +8,10 @@ pub struct Delete {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Delete {
|
impl Delete {
|
||||||
pub fn new<NT>(name: NT) -> Self where NT: Into<NameType> {
|
pub fn new<NT>(name: NT) -> Self
|
||||||
|
where
|
||||||
|
NT: Into<NameType>,
|
||||||
|
{
|
||||||
Self {
|
Self {
|
||||||
doc_name: name.into(),
|
doc_name: name.into(),
|
||||||
query: Query::internal(),
|
query: Query::internal(),
|
||||||
@ -35,11 +35,11 @@ impl MessageAction for Delete {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod deletes {
|
mod deletes {
|
||||||
|
use super::*;
|
||||||
use crate::{
|
use crate::{
|
||||||
action::{Calculation, Operand},
|
action::{Calculation, Operand},
|
||||||
name::test_support::random_name
|
name::test_support::random_name,
|
||||||
};
|
};
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn can_create_delete_request() {
|
fn can_create_delete_request() {
|
||||||
|
|||||||
@ -1,12 +1,6 @@
|
|||||||
use super::{Addition, Delete, DocDef, Query, Records, Reply, Show, UserAction};
|
use super::{Addition, Delete, DocDef, Query, Records, Reply, Show, Update, UserAction};
|
||||||
use crate::{
|
use crate::{
|
||||||
message::{
|
message::MessageAction, mtterror::MTTError, name::NameType, queue::data_director::Register,
|
||||||
wrapper::Update,
|
|
||||||
MessageAction,
|
|
||||||
},
|
|
||||||
mtterror::MTTError,
|
|
||||||
name::NameType,
|
|
||||||
queue::data_director::Register,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
@ -43,7 +37,7 @@ impl MessageAction for MsgAction {
|
|||||||
Self::Register(data) => data.doc_name(),
|
Self::Register(data) => data.doc_name(),
|
||||||
Self::Reply(data) => data.doc_name(),
|
Self::Reply(data) => data.doc_name(),
|
||||||
Self::Show(data) => data.doc_name(),
|
Self::Show(data) => data.doc_name(),
|
||||||
_ => &NameType::None,
|
Self::Update(data) => data.doc_name(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
87
src/action/update.rs
Normal file
87
src/action/update.rs
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
use super::{Query, RequestData};
|
||||||
|
use crate::{message::MessageAction, name::NameType};
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
pub struct Update {
|
||||||
|
doc_name: NameType,
|
||||||
|
query: Query,
|
||||||
|
values: RequestData,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Update {
|
||||||
|
pub fn new<NT>(name: NT) -> Self
|
||||||
|
where
|
||||||
|
NT: Into<NameType>,
|
||||||
|
{
|
||||||
|
Self {
|
||||||
|
doc_name: name.into(),
|
||||||
|
query: Query::internal(),
|
||||||
|
values: RequestData::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_query(&self) -> &Query {
|
||||||
|
&self.query
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_query_mut(&mut self) -> &mut Query {
|
||||||
|
&mut self.query
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_values(&self) -> &RequestData {
|
||||||
|
&self.values
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_values_mut(&mut self) -> &mut RequestData {
|
||||||
|
&mut self.values
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl MessageAction for Update {
|
||||||
|
fn doc_name(&self) -> &NameType {
|
||||||
|
&self.doc_name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod updates {
|
||||||
|
use super::*;
|
||||||
|
use crate::{
|
||||||
|
action::{Calculation, Operand},
|
||||||
|
name::test_support::random_name,
|
||||||
|
};
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn is_default_update_empty() {
|
||||||
|
let name = random_name();
|
||||||
|
let expected: NameType = name.clone().into();
|
||||||
|
let update = Update::new(name);
|
||||||
|
assert_eq!(update.doc_name(), &expected);
|
||||||
|
assert_eq!(update.get_query().iter().count(), 0);
|
||||||
|
assert_eq!(update.get_values().iter().count(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn can_update_query_be_altered() {
|
||||||
|
let name = random_name();
|
||||||
|
let expected: NameType = name.clone().into();
|
||||||
|
let mut update = Update::new(name);
|
||||||
|
let query = update.get_query_mut();
|
||||||
|
let mut calc = Calculation::new(Operand::Equal);
|
||||||
|
calc.add_value("something").unwrap();
|
||||||
|
query.add(random_name(), calc);
|
||||||
|
assert_eq!(update.doc_name(), &expected);
|
||||||
|
assert_eq!(update.get_query().iter().count(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn can_update_data_be_altered() {
|
||||||
|
let name = random_name();
|
||||||
|
let expected: NameType = name.clone().into();
|
||||||
|
let mut update = Update::new(name);
|
||||||
|
let values = update.get_values_mut();
|
||||||
|
values.add_field(random_name(), "something");
|
||||||
|
assert_eq!(update.doc_name(), &expected);
|
||||||
|
assert_eq!(update.get_values().iter().count(), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,11 +1,11 @@
|
|||||||
use super::{InternalRecord, InternalRecords, Oid};
|
use super::{InternalRecord, InternalRecords, Oid};
|
||||||
use crate::{
|
use crate::{
|
||||||
action::{Action, CalcValue, Calculation, MsgAction, Query, Records, Reply},
|
action::{Action, CalcValue, Calculation, MsgAction, Query, Records, Reply, Update},
|
||||||
document::{
|
document::{
|
||||||
definition::{DocDef, DocFuncType},
|
definition::{DocDef, DocFuncType},
|
||||||
field::Field,
|
field::Field,
|
||||||
},
|
},
|
||||||
message::wrapper::{Message, Update},
|
message::wrapper::Message,
|
||||||
mtterror::{ErrorID, MTTError},
|
mtterror::{ErrorID, MTTError},
|
||||||
name::NameType,
|
name::NameType,
|
||||||
queue::{
|
queue::{
|
||||||
@ -1005,7 +1005,7 @@ mod document_files {
|
|||||||
MsgAction::Delete(Delete::new(name.clone())),
|
MsgAction::Delete(Delete::new(name.clone())),
|
||||||
MsgAction::Query(Query::new(name.clone())),
|
MsgAction::Query(Query::new(name.clone())),
|
||||||
MsgAction::Show(Show::new(name.clone())),
|
MsgAction::Show(Show::new(name.clone())),
|
||||||
MsgAction::Update(Update::new(Query::internal())),
|
MsgAction::Update(Update::new(name.clone())),
|
||||||
];
|
];
|
||||||
for msg_action in msg_actions.iter() {
|
for msg_action in msg_actions.iter() {
|
||||||
let msg = Message::new(name.clone(), msg_action.clone());
|
let msg = Message::new(name.clone(), msg_action.clone());
|
||||||
@ -1057,7 +1057,7 @@ mod document_files {
|
|||||||
MsgAction::Delete(Delete::new(name.clone())),
|
MsgAction::Delete(Delete::new(name.clone())),
|
||||||
MsgAction::Query(Query::internal().into()),
|
MsgAction::Query(Query::internal().into()),
|
||||||
MsgAction::Show(Show::new(name.clone())),
|
MsgAction::Show(Show::new(name.clone())),
|
||||||
MsgAction::Update(Update::new(Query::internal())),
|
MsgAction::Update(Update::new(name.clone())),
|
||||||
];
|
];
|
||||||
let mut msgs: HashMap<Uuid, MsgAction> = HashMap::new();
|
let mut msgs: HashMap<Uuid, MsgAction> = HashMap::new();
|
||||||
for msg_action in msg_actions.iter() {
|
for msg_action in msg_actions.iter() {
|
||||||
@ -1224,7 +1224,7 @@ mod document_files {
|
|||||||
for item in data.iter() {
|
for item in data.iter() {
|
||||||
test_doc.populate([item.clone()].to_vec());
|
test_doc.populate([item.clone()].to_vec());
|
||||||
}
|
}
|
||||||
let mut update = Update::new(Query::internal());
|
let mut update = Update::new(doc_name.clone());
|
||||||
update
|
update
|
||||||
.get_values_mut()
|
.get_values_mut()
|
||||||
.add_field(field_name.clone(), Uuid::nil());
|
.add_field(field_name.clone(), Uuid::nil());
|
||||||
@ -1813,9 +1813,9 @@ mod document_files {
|
|||||||
calc.add_value(CalcValue::Existing(FieldType::Uuid))
|
calc.add_value(CalcValue::Existing(FieldType::Uuid))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
calc.add_value(Uuid::nil()).unwrap();
|
calc.add_value(Uuid::nil()).unwrap();
|
||||||
let mut query = Query::internal();
|
let mut update = Update::new(doc.doc_name());
|
||||||
|
let query = update.get_query_mut();
|
||||||
query.add(Name::english("field0"), calc);
|
query.add(Name::english("field0"), calc);
|
||||||
let mut update = Update::new(query);
|
|
||||||
update
|
update
|
||||||
.get_values_mut()
|
.get_values_mut()
|
||||||
.add_field(Name::english("field0"), Uuid::nil());
|
.add_field(Name::english("field0"), Uuid::nil());
|
||||||
@ -1841,9 +1841,9 @@ mod document_files {
|
|||||||
calc.add_value(CalcValue::Existing(FieldType::Uuid))
|
calc.add_value(CalcValue::Existing(FieldType::Uuid))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
calc.add_value(id.clone()).unwrap();
|
calc.add_value(id.clone()).unwrap();
|
||||||
let mut query = Query::internal();
|
let mut update = Update::new(doc_name.clone());
|
||||||
|
let query = update.get_query_mut();
|
||||||
query.add(Name::english("field0"), calc);
|
query.add(Name::english("field0"), calc);
|
||||||
let mut update = Update::new(query);
|
|
||||||
update
|
update
|
||||||
.get_values_mut()
|
.get_values_mut()
|
||||||
.add_field(Name::english("field1"), new);
|
.add_field(Name::english("field1"), new);
|
||||||
@ -1884,9 +1884,9 @@ mod document_files {
|
|||||||
calc.add_value(CalcValue::Existing(FieldType::Integer))
|
calc.add_value(CalcValue::Existing(FieldType::Integer))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
calc.add_value(picked.clone()).unwrap();
|
calc.add_value(picked.clone()).unwrap();
|
||||||
let mut query = Query::internal();
|
let mut update = Update::new(doc_name.clone());
|
||||||
|
let query = update.get_query_mut();
|
||||||
query.add(Name::english("field0"), calc);
|
query.add(Name::english("field0"), calc);
|
||||||
let mut update = Update::new(query);
|
|
||||||
update
|
update
|
||||||
.get_values_mut()
|
.get_values_mut()
|
||||||
.add_field(Name::english("field1"), new);
|
.add_field(Name::english("field1"), new);
|
||||||
@ -1948,9 +1948,9 @@ mod document_files {
|
|||||||
calc.add_value(CalcValue::Existing(FieldType::Integer))
|
calc.add_value(CalcValue::Existing(FieldType::Integer))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
calc.add_value(picked.clone()).unwrap();
|
calc.add_value(picked.clone()).unwrap();
|
||||||
let mut query = Query::internal();
|
let mut update = Update::new(doc_name.clone());
|
||||||
|
let query = update.get_query_mut();
|
||||||
query.add(Name::english("field0"), calc);
|
query.add(Name::english("field0"), calc);
|
||||||
let mut update = Update::new(query);
|
|
||||||
update
|
update
|
||||||
.get_values_mut()
|
.get_values_mut()
|
||||||
.add_field(Name::english("field1"), new);
|
.add_field(Name::english("field1"), new);
|
||||||
@ -1982,7 +1982,7 @@ mod document_files {
|
|||||||
let new = "new";
|
let new = "new";
|
||||||
let bad_name = Name::english("wrong");
|
let bad_name = Name::english("wrong");
|
||||||
doc.populate([id.into(), old.into()].to_vec());
|
doc.populate([id.into(), old.into()].to_vec());
|
||||||
let mut update = Update::new(Query::internal());
|
let mut update = Update::new(doc.doc_name());
|
||||||
update.get_values_mut().add_field(bad_name.clone(), new);
|
update.get_values_mut().add_field(bad_name.clone(), new);
|
||||||
doc.send(update);
|
doc.send(update);
|
||||||
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
@ -2009,9 +2009,9 @@ mod document_files {
|
|||||||
calc.add_value(CalcValue::Existing(FieldType::Uuid))
|
calc.add_value(CalcValue::Existing(FieldType::Uuid))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
calc.add_value(id.clone()).unwrap();
|
calc.add_value(id.clone()).unwrap();
|
||||||
let mut query = Query::internal();
|
let mut update = Update::new(doc.doc_name());
|
||||||
|
let query = update.get_query_mut();
|
||||||
query.add(Name::english("field0"), calc);
|
query.add(Name::english("field0"), calc);
|
||||||
let mut update = Update::new(query);
|
|
||||||
update
|
update
|
||||||
.get_values_mut()
|
.get_values_mut()
|
||||||
.add_field(Name::english("field1"), new);
|
.add_field(Name::english("field1"), new);
|
||||||
@ -2044,9 +2044,9 @@ mod document_files {
|
|||||||
calc.add_value(CalcValue::Existing(FieldType::Integer))
|
calc.add_value(CalcValue::Existing(FieldType::Integer))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
calc.add_value(old.clone()).unwrap();
|
calc.add_value(old.clone()).unwrap();
|
||||||
let mut query = Query::internal();
|
let mut update = Update::new(test_doc.doc_name());
|
||||||
|
let query = update.get_query_mut();
|
||||||
query.add(Name::english("field0"), calc);
|
query.add(Name::english("field0"), calc);
|
||||||
let mut update = Update::new(query);
|
|
||||||
update.get_values_mut().add_field(&fname, new);
|
update.get_values_mut().add_field(&fname, new);
|
||||||
test_doc.send(update);
|
test_doc.send(update);
|
||||||
test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
@ -2131,9 +2131,9 @@ mod document_files {
|
|||||||
calc.add_value(CalcValue::Existing(FieldType::StaticString))
|
calc.add_value(CalcValue::Existing(FieldType::StaticString))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
calc.add_value(old).unwrap();
|
calc.add_value(old).unwrap();
|
||||||
let mut query = Query::internal();
|
let mut update = Update::new(doc.doc_name());
|
||||||
|
let query = update.get_query_mut();
|
||||||
query.add(Name::english("field0"), calc);
|
query.add(Name::english("field0"), calc);
|
||||||
let mut update = Update::new(query);
|
|
||||||
update.get_values_mut().add_field(fname.clone(), new);
|
update.get_values_mut().add_field(fname.clone(), new);
|
||||||
doc.send(update);
|
doc.send(update);
|
||||||
doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
@ -2190,9 +2190,9 @@ mod document_files {
|
|||||||
calc.add_value(CalcValue::Existing(FieldType::StaticString))
|
calc.add_value(CalcValue::Existing(FieldType::StaticString))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
calc.add_value(data).unwrap();
|
calc.add_value(data).unwrap();
|
||||||
let mut query = Query::internal();
|
let mut update = Update::new(doc.doc_name());
|
||||||
|
let query = update.get_query_mut();
|
||||||
query.add(&f1name, calc);
|
query.add(&f1name, calc);
|
||||||
let mut update = Update::new(query);
|
|
||||||
update.get_values_mut().add_field(&f0name, holder.clone());
|
update.get_values_mut().add_field(&f0name, holder.clone());
|
||||||
doc.send(update);
|
doc.send(update);
|
||||||
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
@ -2351,7 +2351,7 @@ mod document_files {
|
|||||||
Include::Just(doc_name.clone().into()),
|
Include::Just(doc_name.clone().into()),
|
||||||
Include::Just(Action::OnQuery),
|
Include::Just(Action::OnQuery),
|
||||||
);
|
);
|
||||||
let mut update = Update::new(Query::internal());
|
let mut update = Update::new(doc_name.clone());
|
||||||
let mut calc = Calculation::new(Operand::Add);
|
let mut calc = Calculation::new(Operand::Add);
|
||||||
calc.add_value(CalcValue::Existing(FieldType::Integer))
|
calc.add_value(CalcValue::Existing(FieldType::Integer))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|||||||
@ -377,7 +377,7 @@ impl MessageAction for DocDef {}
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod docdefs {
|
mod docdefs {
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::{action::Query, message::wrapper::Update};
|
use crate::action::{Query, Update};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn message_doc_name_returns_none() {
|
fn message_doc_name_returns_none() {
|
||||||
@ -548,7 +548,7 @@ mod docdefs {
|
|||||||
Include::Just(docname.clone().into()),
|
Include::Just(docname.clone().into()),
|
||||||
Include::Just(Action::OnQuery),
|
Include::Just(Action::OnQuery),
|
||||||
),
|
),
|
||||||
DocFuncType::Trigger(Update::new(Query::new(docname.clone())).into()),
|
DocFuncType::Trigger(Update::new(docname.clone()).into()),
|
||||||
);
|
);
|
||||||
let path_action = docdef.iter_routes().last().unwrap();
|
let path_action = docdef.iter_routes().last().unwrap();
|
||||||
let path = path_action.path();
|
let path = path_action.path();
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
action::{Action, CalcValue, Calculation, Delete, FieldType, Operand, Query},
|
action::{Action, CalcValue, Calculation, Delete, FieldType, Operand, Query, Update},
|
||||||
document::{
|
document::{
|
||||||
clock::Clock,
|
clock::Clock,
|
||||||
create::IndexType,
|
create::IndexType,
|
||||||
definition::{DocDef, DocFuncType},
|
definition::{DocDef, DocFuncType},
|
||||||
},
|
},
|
||||||
message::wrapper::{Message, Update},
|
message::wrapper::Message,
|
||||||
name::{Name, NameType},
|
name::{Name, NameType},
|
||||||
queue::{
|
queue::{
|
||||||
data_director::{Include, Path, RegMsg, Register},
|
data_director::{Include, Path, RegMsg, Register},
|
||||||
@ -40,7 +40,7 @@ impl Session {
|
|||||||
docdef.set_default(&name_expire, calc.clone()).unwrap();
|
docdef.set_default(&name_expire, calc.clone()).unwrap();
|
||||||
docdef.add_index(&name_expire, IndexType::Index).unwrap();
|
docdef.add_index(&name_expire, IndexType::Index).unwrap();
|
||||||
|
|
||||||
let mut update = Update::new(Query::internal());
|
let mut update = Update::new(Session::doc_names()[0].clone());
|
||||||
update
|
update
|
||||||
.get_values_mut()
|
.get_values_mut()
|
||||||
.add_field(name_expire.clone(), calc.clone());
|
.add_field(name_expire.clone(), calc.clone());
|
||||||
|
|||||||
@ -347,31 +347,3 @@ mod documents {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
|
||||||
pub struct Update {
|
|
||||||
query: Query,
|
|
||||||
values: Document,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Update {
|
|
||||||
pub fn new(query: Query) -> Self {
|
|
||||||
Self {
|
|
||||||
query: query.into(),
|
|
||||||
values: Document::new(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn get_query(&self) -> &Query {
|
|
||||||
&self.query
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn get_values(&self) -> &Document {
|
|
||||||
&self.values
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn get_values_mut(&mut self) -> &mut Document {
|
|
||||||
&mut self.values
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user