From e2bb5bb93ff5fb6222a848cc941322151ff23f40 Mon Sep 17 00:00:00 2001 From: Jeff Baskin Date: Mon, 16 Feb 2026 07:12:59 -0500 Subject: [PATCH] Added show module which will eventually show DocDef. --- src/action.rs | 2 ++ src/action/action_type.rs | 2 +- src/action/message.rs | 5 +++-- src/action/show.rs | 37 +++++++++++++++++++++++++++++++++++++ src/document/create.rs | 6 +++--- src/name.rs | 9 +++++++++ src/queue/data_director.rs | 10 +++++++--- 7 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 src/action/show.rs diff --git a/src/action.rs b/src/action.rs index 5dcaaff..089fb45 100644 --- a/src/action.rs +++ b/src/action.rs @@ -5,6 +5,7 @@ mod message; mod query; mod reply; mod request_data; +mod show; mod user; pub use crate::document::{DocDef, Field, FieldType, Records}; @@ -15,4 +16,5 @@ pub use message::MsgAction; pub use query::Query; pub use reply::Reply; use request_data::RequestData; +pub use show::Show; pub use user::UserAction; diff --git a/src/action/action_type.rs b/src/action/action_type.rs index 8b19e6e..d9dda16 100644 --- a/src/action/action_type.rs +++ b/src/action/action_type.rs @@ -33,7 +33,7 @@ impl From for Action { MsgAction::Records(_) => Action::Records, MsgAction::Register(_) => Action::Register, MsgAction::Reply(_) => Action::Reply, - MsgAction::Show => Action::Show, + MsgAction::Show(_) => Action::Show, MsgAction::Update(_) => Action::Update, } } diff --git a/src/action/message.rs b/src/action/message.rs index f6c8574..7a1fc76 100644 --- a/src/action/message.rs +++ b/src/action/message.rs @@ -1,4 +1,4 @@ -use super::{Addition, DocDef, Query, Records, Reply, UserAction}; +use super::{Addition, DocDef, Query, Records, Reply, Show, UserAction}; use crate::{ message::{ wrapper::{Delete, Update}, @@ -22,7 +22,7 @@ pub enum MsgAction { Records(Records), Register(Register), Reply(Reply), - Show, + Show(Show), Delete(Delete), Update(Update), } @@ -41,6 +41,7 @@ impl MessageAction for MsgAction { Self::Records(data) => data.doc_name(), Self::Register(data) => data.doc_name(), Self::Reply(data) => data.doc_name(), + Self::Show(data) => data.doc_name(), _ => &NameType::None, } } diff --git a/src/action/show.rs b/src/action/show.rs new file mode 100644 index 0000000..11251a6 --- /dev/null +++ b/src/action/show.rs @@ -0,0 +1,37 @@ +use crate::{message::MessageAction, name::NameType}; + +#[derive(Clone, Debug)] +pub struct Show { + doc_name: NameType, +} + +impl Show { + pub fn new(name: NT) -> Self + where + NT: Into, + { + Self { + doc_name: name.into(), + } + } +} + +impl MessageAction for Show { + fn doc_name(&self) -> &NameType { + &self.doc_name + } +} + +#[cfg(test)] +mod shows { + use super::*; + use crate::name::test_support::random_name; + + #[test] + fn can_request_a_show() { + let name = random_name(); + let expected: NameType = name.clone().into(); + let show = Show::new(name); + assert_eq!(show.doc_name(), &expected); + } +} diff --git a/src/document/create.rs b/src/document/create.rs index cea52de..a3dc4aa 100644 --- a/src/document/create.rs +++ b/src/document/create.rs @@ -845,7 +845,7 @@ impl DocumentFile { mod document_files { use super::*; use crate::{ - action::{Addition, FieldType, Operand}, + action::{Addition, FieldType, Operand, Show}, document::Clock, message::wrapper::Delete, name::{Name, Names}, @@ -1005,7 +1005,7 @@ mod document_files { MsgAction::Addition(Addition::new(name.clone())), MsgAction::Delete(Delete::new(Query::internal())), MsgAction::Query(Query::new(name.clone())), - MsgAction::Show, + MsgAction::Show(Show::new(name.clone())), MsgAction::Update(Update::new(Query::internal())), ]; for msg_action in msg_actions.iter() { @@ -1057,7 +1057,7 @@ mod document_files { MsgAction::Create(DocDef::new(name.clone())), MsgAction::Delete(Delete::new(Query::new(alt.clone()))), MsgAction::Query(Query::internal().into()), - MsgAction::Show, + MsgAction::Show(Show::new(name.clone())), MsgAction::Update(Update::new(Query::internal())), ]; let mut msgs: HashMap = HashMap::new(); diff --git a/src/name.rs b/src/name.rs index e2b1bbb..9d291ec 100644 --- a/src/name.rs +++ b/src/name.rs @@ -75,6 +75,15 @@ impl fmt::Display for Name { } } +#[cfg(test)] +pub mod test_support { + use super::*; + + pub fn random_name() -> Name { + Name::english(Uuid::new_v4().to_string().as_str()) + } +} + #[derive(Clone, Debug, PartialEq)] pub struct Names { names: HashMap, diff --git a/src/queue/data_director.rs b/src/queue/data_director.rs index c9fc257..5fb7e8e 100644 --- a/src/queue/data_director.rs +++ b/src/queue/data_director.rs @@ -147,14 +147,17 @@ impl Path { mod paths { use super::*; use crate::{ - action::Records, + action::{Records, Show}, name::{Name, Names}, }; #[test] fn can_create_for_message() { let input = [ - (Name::english("one"), MsgAction::Show), + ( + Name::english("one"), + MsgAction::Show(Show::new(Name::english("one"))), + ), ( Name::english("two"), MsgAction::Records(Records::new(vec![Name::english("two")], Names::new())), @@ -178,7 +181,8 @@ mod paths { let count = 10; let mut ids: Vec = Vec::new(); for _ in 0..count { - let path = Path::for_message(NameType::None, &MsgAction::Show); + let path = + Path::for_message(NameType::None, &MsgAction::Show(Show::new(NameType::None))); let id = match path.msg_id { Include::Just(data) => data.clone(), Include::All => unreachable!("should have been a message id"),