From 564602b7668e102f03ac0c0943212774c2aa2422 Mon Sep 17 00:00:00 2001 From: Jeff Baskin Date: Thu, 12 Feb 2026 10:18:53 -0500 Subject: [PATCH] Started MessageAction trait. --- src/action/addition.rs | 12 +++++++----- src/action/message.rs | 10 +++++++--- src/action/query.rs | 12 +++++++----- src/document/definition.rs | 14 ++++++++++++++ src/lib.rs | 2 +- src/message.rs | 6 ++++++ 6 files changed, 42 insertions(+), 14 deletions(-) diff --git a/src/action/addition.rs b/src/action/addition.rs index e23b538..aea3f4b 100644 --- a/src/action/addition.rs +++ b/src/action/addition.rs @@ -1,5 +1,5 @@ use super::{CalcValue, Field, RequestData}; -use crate::name::NameType; +use crate::{message::MessageAction, name::NameType}; use uuid::Uuid; #[derive(Clone, Debug)] @@ -19,10 +19,6 @@ impl Addition { } } - pub fn doc_name(&self) -> NameType { - self.doc_name.clone() - } - pub fn add_field(&mut self, name: NT, field: CV) where CV: Into, @@ -36,6 +32,12 @@ impl Addition { } } +impl MessageAction for Addition { + fn doc_name(&self) -> NameType { + self.doc_name.clone() + } +} + #[cfg(test)] mod additions { use super::*; diff --git a/src/action/message.rs b/src/action/message.rs index 78e98d0..e5e6149 100644 --- a/src/action/message.rs +++ b/src/action/message.rs @@ -1,6 +1,9 @@ use super::{Addition, DocDef, Query, UserAction}; use crate::{ - message::wrapper::{Delete, Records, Reply, Update}, + message::{ + wrapper::{Delete, Records, Reply, Update}, + MessageAction, + }, mtterror::MTTError, name::NameType, queue::data_director::Register, @@ -24,11 +27,12 @@ pub enum MsgAction { Update(Update), } -impl MsgAction { +impl MessageAction for MsgAction { fn doc_name(&self) -> NameType { match self { - Self::Addition(data) => NameType::None, + Self::Addition(data) => data.doc_name(), Self::Query(data) => data.doc_name(), + Self::Create(data) => data.doc_name(), _ => NameType::None, } } diff --git a/src/action/query.rs b/src/action/query.rs index 87340db..8246631 100644 --- a/src/action/query.rs +++ b/src/action/query.rs @@ -1,5 +1,5 @@ use super::Calculation; -use crate::name::NameType; +use crate::{message::MessageAction, name::NameType}; use std::collections::{HashMap, HashSet}; #[derive(Clone, Debug)] @@ -23,10 +23,6 @@ impl Query { Self::new(NameType::None) } - pub fn doc_name(&self) -> NameType { - self.doc_name.clone() - } - pub fn add(&mut self, name: NT, operation: Calculation) where NT: Into, @@ -55,6 +51,12 @@ impl Query { } } +impl MessageAction for Query { + fn doc_name(&self) -> NameType { + self.doc_name.clone() + } +} + #[cfg(test)] mod queries { use super::*; diff --git a/src/document/definition.rs b/src/document/definition.rs index d7d71b9..d02fd6d 100644 --- a/src/document/definition.rs +++ b/src/document/definition.rs @@ -1,6 +1,7 @@ use crate::{ action::{Action, CalcValue, Field, FieldType, MsgAction}, document::create::IndexType, + message::MessageAction, mtterror::MTTError, name::{Name, NameType, Names}, queue::data_director::{Include, Path}, @@ -373,11 +374,24 @@ impl DocDef { } } +impl MessageAction for DocDef { + fn doc_name(&self) -> NameType { + NameType::None + } +} + #[cfg(test)] mod docdefs { use super::*; use crate::{action::Query, message::wrapper::Update}; + #[test] + fn message_doc_name_returns_none() { + let docname = Name::english("tester"); + let mut docdef = DocDef::new(docname); + assert_eq!(docdef.doc_name(), NameType::None); + } + #[test] fn can_field_be_added() { let docname = Name::english("tester"); diff --git a/src/lib.rs b/src/lib.rs index 1e9f1e1..3027a02 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,7 +10,7 @@ use action::{ UserAction, }; use document::{clock::Clock, create::CreateDoc, session::Session}; -use message::wrapper::Message; +use message::{wrapper::Message, MessageAction}; use queue::{ data_director::{Include, Path, RegMsg, Register}, router::Queue, diff --git a/src/message.rs b/src/message.rs index e4ea5ca..6e1cdf8 100644 --- a/src/message.rs +++ b/src/message.rs @@ -1 +1,7 @@ pub mod wrapper; + +use crate::name::NameType; + +pub trait MessageAction { + fn doc_name(&self) -> NameType; +}