Moved delete 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
e2bb5bb93f
commit
d47124656f
@ -1,6 +1,7 @@
|
||||
mod action_type;
|
||||
mod addition;
|
||||
mod calculation;
|
||||
mod delete;
|
||||
mod message;
|
||||
mod query;
|
||||
mod reply;
|
||||
@ -12,6 +13,7 @@ pub use crate::document::{DocDef, Field, FieldType, Records};
|
||||
pub use action_type::Action;
|
||||
pub use addition::Addition;
|
||||
pub use calculation::{CalcValue, Calculation, Operand};
|
||||
pub use delete::Delete;
|
||||
pub use message::MsgAction;
|
||||
pub use query::Query;
|
||||
pub use reply::Reply;
|
||||
|
||||
65
src/action/delete.rs
Normal file
65
src/action/delete.rs
Normal file
@ -0,0 +1,65 @@
|
||||
use crate::{
|
||||
name::NameType,
|
||||
message::MessageAction,
|
||||
};
|
||||
use super::Query;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct Delete {
|
||||
doc_name: NameType,
|
||||
query: Query,
|
||||
}
|
||||
|
||||
impl Delete {
|
||||
pub fn new<NT>(name: NT) -> Self where NT: Into<NameType> {
|
||||
Self {
|
||||
doc_name: name.into(),
|
||||
query: Query::internal(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_query(&self) -> &Query {
|
||||
&self.query
|
||||
}
|
||||
|
||||
pub fn get_query_mut(&mut self) -> &mut Query {
|
||||
&mut self.query
|
||||
}
|
||||
}
|
||||
|
||||
impl MessageAction for Delete {
|
||||
fn doc_name(&self) -> &NameType {
|
||||
&self.doc_name
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod deletes {
|
||||
use crate::{
|
||||
action::{Calculation, Operand},
|
||||
name::test_support::random_name
|
||||
};
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn can_create_delete_request() {
|
||||
let name = random_name();
|
||||
let expected: NameType = name.clone().into();
|
||||
let delete = Delete::new(name);
|
||||
assert_eq!(delete.doc_name(), &expected);
|
||||
assert_eq!(delete.get_query().iter().count(), 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn can_delete_query_be_added_to() {
|
||||
let name = random_name();
|
||||
let expected: NameType = name.clone().into();
|
||||
let mut delete = Delete::new(name);
|
||||
let query = delete.get_query_mut();
|
||||
let mut calc = Calculation::new(Operand::Equal);
|
||||
calc.add_value("something").unwrap();
|
||||
query.add(random_name(), calc);
|
||||
assert_eq!(delete.doc_name(), &expected);
|
||||
assert_eq!(delete.get_query().iter().count(), 1);
|
||||
}
|
||||
}
|
||||
@ -1,7 +1,7 @@
|
||||
use super::{Addition, DocDef, Query, Records, Reply, Show, UserAction};
|
||||
use super::{Addition, Delete, DocDef, Query, Records, Reply, Show, UserAction};
|
||||
use crate::{
|
||||
message::{
|
||||
wrapper::{Delete, Update},
|
||||
wrapper::Update,
|
||||
MessageAction,
|
||||
},
|
||||
mtterror::MTTError,
|
||||
@ -13,6 +13,7 @@ use crate::{
|
||||
pub enum MsgAction {
|
||||
Addition(Addition),
|
||||
Create(DocDef),
|
||||
Delete(Delete),
|
||||
Error(MTTError),
|
||||
OnAddition(Records),
|
||||
OnDelete(Records),
|
||||
@ -23,7 +24,6 @@ pub enum MsgAction {
|
||||
Register(Register),
|
||||
Reply(Reply),
|
||||
Show(Show),
|
||||
Delete(Delete),
|
||||
Update(Update),
|
||||
}
|
||||
|
||||
@ -32,6 +32,7 @@ impl MessageAction for MsgAction {
|
||||
match self {
|
||||
Self::Addition(data) => data.doc_name(),
|
||||
Self::Create(data) => data.doc_name(),
|
||||
Self::Delete(data) => data.doc_name(),
|
||||
Self::Error(data) => data.doc_name(),
|
||||
Self::OnAddition(data) => data.doc_name(),
|
||||
Self::OnDelete(data) => data.doc_name(),
|
||||
|
||||
@ -845,9 +845,8 @@ impl DocumentFile {
|
||||
mod document_files {
|
||||
use super::*;
|
||||
use crate::{
|
||||
action::{Addition, FieldType, Operand, Show},
|
||||
action::{Addition, Delete, FieldType, Operand, Show},
|
||||
document::Clock,
|
||||
message::wrapper::Delete,
|
||||
name::{Name, Names},
|
||||
support_tests::TIMEOUT,
|
||||
};
|
||||
@ -1003,7 +1002,7 @@ mod document_files {
|
||||
let queue = test_doc.get_queue();
|
||||
let msg_actions = [
|
||||
MsgAction::Addition(Addition::new(name.clone())),
|
||||
MsgAction::Delete(Delete::new(Query::internal())),
|
||||
MsgAction::Delete(Delete::new(name.clone())),
|
||||
MsgAction::Query(Query::new(name.clone())),
|
||||
MsgAction::Show(Show::new(name.clone())),
|
||||
MsgAction::Update(Update::new(Query::internal())),
|
||||
@ -1055,7 +1054,7 @@ mod document_files {
|
||||
let msg_actions = [
|
||||
MsgAction::Addition(Addition::new(alt.clone())),
|
||||
MsgAction::Create(DocDef::new(name.clone())),
|
||||
MsgAction::Delete(Delete::new(Query::new(alt.clone()))),
|
||||
MsgAction::Delete(Delete::new(name.clone())),
|
||||
MsgAction::Query(Query::internal().into()),
|
||||
MsgAction::Show(Show::new(name.clone())),
|
||||
MsgAction::Update(Update::new(Query::internal())),
|
||||
@ -1179,7 +1178,7 @@ mod document_files {
|
||||
for item in data.iter() {
|
||||
test_doc.populate([item.clone()].to_vec());
|
||||
}
|
||||
let msg = Message::new(doc_name.clone(), Delete::new(Query::internal()));
|
||||
let msg = Message::new(doc_name.clone(), Delete::new(doc_name.clone()));
|
||||
queue.send(msg.clone());
|
||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||
assert_eq!(
|
||||
@ -2267,9 +2266,9 @@ mod document_files {
|
||||
calc.add_value(1).unwrap();
|
||||
calc.add_value(CalcValue::Existing(FieldType::Integer))
|
||||
.unwrap();
|
||||
let mut query = Query::new(doc.doc_name());
|
||||
query.add(&fname, calc);
|
||||
let delete = Delete::new(query.clone());
|
||||
let mut delete = Delete::new(doc.doc_name());
|
||||
let query = delete.get_query_mut();
|
||||
query.add(&fname, calc.clone());
|
||||
doc.send(delete);
|
||||
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||
let action = result.get_action();
|
||||
@ -2285,7 +2284,9 @@ mod document_files {
|
||||
}
|
||||
_ => unreachable!("got {:?}: should have gotten reply", action),
|
||||
}
|
||||
doc.send(query);
|
||||
let mut result_query = Query::new(doc.doc_name());
|
||||
result_query.add(&fname, calc.clone());
|
||||
doc.send(result_query);
|
||||
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||
let action = result.get_action();
|
||||
match action {
|
||||
@ -2303,9 +2304,9 @@ mod document_files {
|
||||
calc.add_value(CalcValue::Existing(FieldType::Integer))
|
||||
.unwrap();
|
||||
calc.add_value(1).unwrap();
|
||||
let mut query = Query::internal();
|
||||
let mut delete = Delete::new(doc.doc_name());
|
||||
let query = delete.get_query_mut();
|
||||
query.add(field_name.clone(), calc);
|
||||
let delete = Delete::new(query);
|
||||
doc.send(delete);
|
||||
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||
let action = result.get_action();
|
||||
@ -2328,7 +2329,7 @@ mod document_files {
|
||||
.unwrap();
|
||||
doc.start(standard_paths());
|
||||
doc.populate([value.into()].to_vec());
|
||||
doc.send(Delete::new(Query::internal()));
|
||||
doc.send(Delete::new(doc.doc_name()));
|
||||
doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||
let mut addition = Addition::new(doc.doc_name());
|
||||
addition.add_field(&fname, value.clone());
|
||||
@ -2406,9 +2407,9 @@ mod document_files {
|
||||
calc.add_value(CalcValue::Existing(FieldType::Integer))
|
||||
.unwrap();
|
||||
calc.add_value(1).unwrap();
|
||||
let mut query = Query::internal();
|
||||
let mut delete = Delete::new(doc_name.clone());
|
||||
let query = delete.get_query_mut();
|
||||
query.add(Name::english("field0"), calc);
|
||||
let delete = Delete::new(query.clone());
|
||||
let path = Path::new(
|
||||
Include::All,
|
||||
Include::Just(Name::english("clock").into()),
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
use crate::{
|
||||
action::{Action, CalcValue, Calculation, FieldType, Operand, Query},
|
||||
action::{Action, CalcValue, Calculation, Delete, FieldType, Operand, Query},
|
||||
document::{
|
||||
clock::Clock,
|
||||
create::IndexType,
|
||||
definition::{DocDef, DocFuncType},
|
||||
},
|
||||
message::wrapper::{Delete, Message, Update},
|
||||
message::wrapper::{Message, Update},
|
||||
name::{Name, NameType},
|
||||
queue::{
|
||||
data_director::{Include, Path, RegMsg, Register},
|
||||
@ -52,14 +52,14 @@ impl Session {
|
||||
let query_action = DocFuncType::ExistingQuery(update.into());
|
||||
docdef.add_route(path, query_action);
|
||||
|
||||
let mut delete_qry = Query::internal();
|
||||
let mut delete = Delete::new(Session::doc_names()[0].clone());
|
||||
let delete_qry = delete.get_query_mut();
|
||||
let mut delete_calc = Calculation::new(Operand::LessThan);
|
||||
delete_calc.add_value(FieldType::DateTime).unwrap();
|
||||
delete_calc
|
||||
.add_value(CalcValue::Existing(FieldType::DateTime))
|
||||
.unwrap();
|
||||
delete_qry.add(name_expire.clone(), delete_calc);
|
||||
let delete = Delete::new(delete_qry);
|
||||
let delete_func = DocFuncType::Trigger(delete.into());
|
||||
docdef.add_route(Clock::get_path(), delete_func);
|
||||
|
||||
|
||||
@ -348,22 +348,6 @@ mod documents {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct Delete {
|
||||
query: Query,
|
||||
}
|
||||
|
||||
impl Delete {
|
||||
pub fn new(query: Query) -> Self {
|
||||
Self {
|
||||
query: query.into(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_query(&self) -> &Query {
|
||||
&self.query
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct Update {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user