Moved delete into action module.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 0s

This commit is contained in:
Jeff Baskin 2026-02-16 08:28:59 -05:00
parent e2bb5bb93f
commit d47124656f
6 changed files with 90 additions and 37 deletions

View File

@ -1,6 +1,7 @@
mod action_type; mod action_type;
mod addition; mod addition;
mod calculation; mod calculation;
mod delete;
mod message; mod message;
mod query; mod query;
mod reply; mod reply;
@ -12,6 +13,7 @@ pub use crate::document::{DocDef, Field, FieldType, Records};
pub use action_type::Action; pub use action_type::Action;
pub use addition::Addition; pub use addition::Addition;
pub use calculation::{CalcValue, Calculation, Operand}; pub use calculation::{CalcValue, Calculation, Operand};
pub use delete::Delete;
pub use message::MsgAction; pub use message::MsgAction;
pub use query::Query; pub use query::Query;
pub use reply::Reply; pub use reply::Reply;

65
src/action/delete.rs Normal file
View 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);
}
}

View File

@ -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::{ use crate::{
message::{ message::{
wrapper::{Delete, Update}, wrapper::Update,
MessageAction, MessageAction,
}, },
mtterror::MTTError, mtterror::MTTError,
@ -13,6 +13,7 @@ use crate::{
pub enum MsgAction { pub enum MsgAction {
Addition(Addition), Addition(Addition),
Create(DocDef), Create(DocDef),
Delete(Delete),
Error(MTTError), Error(MTTError),
OnAddition(Records), OnAddition(Records),
OnDelete(Records), OnDelete(Records),
@ -23,7 +24,6 @@ pub enum MsgAction {
Register(Register), Register(Register),
Reply(Reply), Reply(Reply),
Show(Show), Show(Show),
Delete(Delete),
Update(Update), Update(Update),
} }
@ -32,6 +32,7 @@ impl MessageAction for MsgAction {
match self { match self {
Self::Addition(data) => data.doc_name(), Self::Addition(data) => data.doc_name(),
Self::Create(data) => data.doc_name(), Self::Create(data) => data.doc_name(),
Self::Delete(data) => data.doc_name(),
Self::Error(data) => data.doc_name(), Self::Error(data) => data.doc_name(),
Self::OnAddition(data) => data.doc_name(), Self::OnAddition(data) => data.doc_name(),
Self::OnDelete(data) => data.doc_name(), Self::OnDelete(data) => data.doc_name(),

View File

@ -845,9 +845,8 @@ impl DocumentFile {
mod document_files { mod document_files {
use super::*; use super::*;
use crate::{ use crate::{
action::{Addition, FieldType, Operand, Show}, action::{Addition, Delete, FieldType, Operand, Show},
document::Clock, document::Clock,
message::wrapper::Delete,
name::{Name, Names}, name::{Name, Names},
support_tests::TIMEOUT, support_tests::TIMEOUT,
}; };
@ -1003,7 +1002,7 @@ mod document_files {
let queue = test_doc.get_queue(); let queue = test_doc.get_queue();
let msg_actions = [ let msg_actions = [
MsgAction::Addition(Addition::new(name.clone())), 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::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(Query::internal())),
@ -1055,7 +1054,7 @@ mod document_files {
let msg_actions = [ let msg_actions = [
MsgAction::Addition(Addition::new(alt.clone())), MsgAction::Addition(Addition::new(alt.clone())),
MsgAction::Create(DocDef::new(name.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::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(Query::internal())),
@ -1179,7 +1178,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 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()); queue.send(msg.clone());
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
assert_eq!( assert_eq!(
@ -2267,9 +2266,9 @@ mod document_files {
calc.add_value(1).unwrap(); calc.add_value(1).unwrap();
calc.add_value(CalcValue::Existing(FieldType::Integer)) calc.add_value(CalcValue::Existing(FieldType::Integer))
.unwrap(); .unwrap();
let mut query = Query::new(doc.doc_name()); let mut delete = Delete::new(doc.doc_name());
query.add(&fname, calc); let query = delete.get_query_mut();
let delete = Delete::new(query.clone()); query.add(&fname, calc.clone());
doc.send(delete); doc.send(delete);
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
@ -2285,7 +2284,9 @@ mod document_files {
} }
_ => unreachable!("got {:?}: should have gotten reply", action), _ => 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 result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
match action { match action {
@ -2303,9 +2304,9 @@ mod document_files {
calc.add_value(CalcValue::Existing(FieldType::Integer)) calc.add_value(CalcValue::Existing(FieldType::Integer))
.unwrap(); .unwrap();
calc.add_value(1).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); query.add(field_name.clone(), calc);
let delete = Delete::new(query);
doc.send(delete); doc.send(delete);
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
@ -2328,7 +2329,7 @@ mod document_files {
.unwrap(); .unwrap();
doc.start(standard_paths()); doc.start(standard_paths());
doc.populate([value.into()].to_vec()); 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(); doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let mut addition = Addition::new(doc.doc_name()); let mut addition = Addition::new(doc.doc_name());
addition.add_field(&fname, value.clone()); addition.add_field(&fname, value.clone());
@ -2406,9 +2407,9 @@ mod document_files {
calc.add_value(CalcValue::Existing(FieldType::Integer)) calc.add_value(CalcValue::Existing(FieldType::Integer))
.unwrap(); .unwrap();
calc.add_value(1).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); query.add(Name::english("field0"), calc);
let delete = Delete::new(query.clone());
let path = Path::new( let path = Path::new(
Include::All, Include::All,
Include::Just(Name::english("clock").into()), Include::Just(Name::english("clock").into()),

View File

@ -1,11 +1,11 @@
use crate::{ use crate::{
action::{Action, CalcValue, Calculation, FieldType, Operand, Query}, action::{Action, CalcValue, Calculation, Delete, FieldType, Operand, Query},
document::{ document::{
clock::Clock, clock::Clock,
create::IndexType, create::IndexType,
definition::{DocDef, DocFuncType}, definition::{DocDef, DocFuncType},
}, },
message::wrapper::{Delete, Message, Update}, message::wrapper::{Message, Update},
name::{Name, NameType}, name::{Name, NameType},
queue::{ queue::{
data_director::{Include, Path, RegMsg, Register}, data_director::{Include, Path, RegMsg, Register},
@ -52,14 +52,14 @@ impl Session {
let query_action = DocFuncType::ExistingQuery(update.into()); let query_action = DocFuncType::ExistingQuery(update.into());
docdef.add_route(path, query_action); 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); let mut delete_calc = Calculation::new(Operand::LessThan);
delete_calc.add_value(FieldType::DateTime).unwrap(); delete_calc.add_value(FieldType::DateTime).unwrap();
delete_calc delete_calc
.add_value(CalcValue::Existing(FieldType::DateTime)) .add_value(CalcValue::Existing(FieldType::DateTime))
.unwrap(); .unwrap();
delete_qry.add(name_expire.clone(), delete_calc); delete_qry.add(name_expire.clone(), delete_calc);
let delete = Delete::new(delete_qry);
let delete_func = DocFuncType::Trigger(delete.into()); let delete_func = DocFuncType::Trigger(delete.into());
docdef.add_route(Clock::get_path(), delete_func); docdef.add_route(Clock::get_path(), delete_func);

View File

@ -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)] #[derive(Clone, Debug)]
pub struct Update { pub struct Update {