Added show module which will eventually show DocDef.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
Jeff Baskin 2026-02-16 07:12:59 -05:00
parent 903158b72a
commit e2bb5bb93f
7 changed files with 62 additions and 9 deletions

View File

@ -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;

View File

@ -33,7 +33,7 @@ impl From<MsgAction> 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,
}
}

View File

@ -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,
}
}

37
src/action/show.rs Normal file
View File

@ -0,0 +1,37 @@
use crate::{message::MessageAction, name::NameType};
#[derive(Clone, Debug)]
pub struct Show {
doc_name: NameType,
}
impl Show {
pub fn new<NT>(name: NT) -> Self
where
NT: Into<NameType>,
{
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);
}
}

View File

@ -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<Uuid, MsgAction> = HashMap::new();

View File

@ -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<Name, Uuid>,

View File

@ -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<Uuid> = 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"),