Made message ids its own structure.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
2026-03-10 10:41:24 -04:00
parent af0af3373b
commit 1684ab3367
3 changed files with 52 additions and 23 deletions

View File

@@ -2,6 +2,8 @@ pub mod wrapper;
use crate::name::NameType; use crate::name::NameType;
pub use wrapper::MessageID;
pub trait MessageAction { pub trait MessageAction {
fn doc_name(&self) -> &NameType { fn doc_name(&self) -> &NameType {
&NameType::None &NameType::None

View File

@@ -12,10 +12,34 @@ use std::{
}; };
use uuid::Uuid; use uuid::Uuid;
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
pub struct MessageID {
data: Uuid,
}
impl MessageID {
pub fn new() -> Self {
Self {
data: Uuid::new_v4(),
}
}
}
#[cfg(test)]
mod message_ids {
use super::*;
#[test]
fn are_message_ids_unique() {
let id1 = MessageID::new();
let id2 = MessageID::new();
assert!(id1 != id2);
}
}
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct Message { pub struct Message {
msg_id: Uuid, msg_id: MessageID,
// document_id: NameType,
action: MsgAction, action: MsgAction,
route: Route, route: Route,
// session: Option<?> // session: Option<?>
@@ -27,13 +51,13 @@ impl Message {
A: Into<MsgAction>, A: Into<MsgAction>,
{ {
Self { Self {
msg_id: Uuid::new_v4(), msg_id: MessageID::new(),
action: action.into(), action: action.into(),
route: Route::default(), route: Route::default(),
} }
} }
pub fn get_message_id(&self) -> &Uuid { pub fn get_message_id(&self) -> &MessageID {
&self.msg_id &self.msg_id
} }
@@ -158,11 +182,11 @@ mod messages {
#[test] #[test]
fn is_the_message_id_random() { fn is_the_message_id_random() {
let mut ids: Vec<Uuid> = Vec::new(); let mut ids: Vec<MessageID> = Vec::new();
for _ in 0..5 { for _ in 0..5 {
let msg = Message::new(Query::new(Name::english("test"))); let msg = Message::new(Query::new(Name::english("test")));
let id = msg.get_message_id().clone(); let id = msg.get_message_id().clone();
assert!(!ids.contains(&id), "{:?} containts {}", ids, id); assert!(!ids.contains(&id), "{:?} containts {:?}", ids, id);
ids.push(id); ids.push(id);
} }
} }

View File

@@ -1,7 +1,10 @@
use super::SenderID; use super::SenderID;
use crate::{ use crate::{
action::{Action, MsgAction}, action::{Action, MsgAction},
message::{wrapper::Message, MessageAction}, message::{
wrapper::{Message, MessageID},
MessageAction,
},
mtterror::MTTError, mtterror::MTTError,
name::{Name, NameID, NameType, Names}, name::{Name, NameID, NameType, Names},
queue::router::Queue, queue::router::Queue,
@@ -121,13 +124,13 @@ mod registries {
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct Path { pub struct Path {
pub msg_id: Include<Uuid>, pub msg_id: Include<MessageID>,
pub doc: Include<NameType>, pub doc: Include<NameType>,
pub action: Include<Action>, pub action: Include<Action>,
} }
impl Path { impl Path {
pub fn new(id: Include<Uuid>, doc: Include<NameType>, action: Include<Action>) -> Self { pub fn new(id: Include<MessageID>, doc: Include<NameType>, action: Include<Action>) -> Self {
Self { Self {
msg_id: id, msg_id: id,
doc: doc, doc: doc,
@@ -140,7 +143,7 @@ impl Path {
NT: Into<NameType>, NT: Into<NameType>,
{ {
Self { Self {
msg_id: Include::Just(Uuid::new_v4()), msg_id: Include::Just(MessageID::new()),
doc: Include::Just(name.into()), doc: Include::Just(name.into()),
action: Include::Just(action.into()), action: Include::Just(action.into()),
} }
@@ -183,7 +186,7 @@ mod paths {
#[test] #[test]
fn message_ids_are_unique_for_message_paths() { fn message_ids_are_unique_for_message_paths() {
let count = 10; let count = 10;
let mut ids: Vec<Uuid> = Vec::new(); let mut ids: Vec<MessageID> = Vec::new();
for _ in 0..count { for _ in 0..count {
let path = let path =
Path::for_message(NameType::None, &MsgAction::Show(Show::new(NameType::None))); Path::for_message(NameType::None, &MsgAction::Show(Show::new(NameType::None)));
@@ -201,11 +204,11 @@ mod paths {
pub struct Route { pub struct Route {
pub action: Include<Action>, pub action: Include<Action>,
pub doc_id: Include<NameID>, pub doc_id: Include<NameID>,
pub msg_id: Include<Uuid>, pub msg_id: Include<MessageID>,
} }
impl Route { impl Route {
pub fn new(msg_id: Include<Uuid>, doc: Include<NameID>, action: Include<Action>) -> Self { pub fn new(msg_id: Include<MessageID>, doc: Include<NameID>, action: Include<Action>) -> Self {
Self { Self {
action: action, action: action,
doc_id: doc, doc_id: doc,
@@ -253,7 +256,7 @@ impl From<&RouteID> for Route {
pub struct RouteID { pub struct RouteID {
action: Option<Action>, action: Option<Action>,
doc_id: Option<NameID>, doc_id: Option<NameID>,
msg_id: Option<Uuid>, msg_id: Option<MessageID>,
} }
impl From<Route> for RouteID { impl From<Route> for RouteID {
@@ -333,8 +336,8 @@ mod route_storeage {
let mut routes = RouteStorage::new(); let mut routes = RouteStorage::new();
let id1 = SenderID::new(); let id1 = SenderID::new();
let id2 = SenderID::new(); let id2 = SenderID::new();
let route1 = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); let route1 = Route::new(Include::Just(MessageID::new()), Include::All, Include::All);
let route2 = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); let route2 = Route::new(Include::Just(MessageID::new()), Include::All, Include::All);
let route_id1 = routes.add(route1.clone(), id1.clone()); let route_id1 = routes.add(route1.clone(), id1.clone());
let route_id2 = routes.add(route2.clone(), id2.clone()); let route_id2 = routes.add(route2.clone(), id2.clone());
let result1 = routes.get(route1.clone()); let result1 = routes.get(route1.clone());
@@ -360,7 +363,7 @@ mod route_storeage {
#[test] #[test]
fn returns_empty_set_when_nothing_is_available() { fn returns_empty_set_when_nothing_is_available() {
let routes = RouteStorage::new(); let routes = RouteStorage::new();
let route = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); let route = Route::new(Include::Just(MessageID::new()), Include::All, Include::All);
let result = routes.get(route); let result = routes.get(route);
assert_eq!(result.len(), 0); assert_eq!(result.len(), 0);
} }
@@ -373,7 +376,7 @@ mod route_storeage {
while ids.len() < count { while ids.len() < count {
ids.insert(SenderID::new()); ids.insert(SenderID::new());
} }
let route = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); let route = Route::new(Include::Just(MessageID::new()), Include::All, Include::All);
for id in ids.iter() { for id in ids.iter() {
routes.add(route.clone(), id.clone()); routes.add(route.clone(), id.clone());
} }
@@ -386,7 +389,7 @@ mod route_storeage {
let count = 5; let count = 5;
let mut routes = RouteStorage::new(); let mut routes = RouteStorage::new();
let id = SenderID::new(); let id = SenderID::new();
let route = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); let route = Route::new(Include::Just(MessageID::new()), Include::All, Include::All);
for _ in 0..count { for _ in 0..count {
routes.add(route.clone(), id.clone()); routes.add(route.clone(), id.clone());
} }
@@ -400,8 +403,8 @@ mod route_storeage {
let mut routes = RouteStorage::new(); let mut routes = RouteStorage::new();
let id1 = SenderID::new(); let id1 = SenderID::new();
let id2 = SenderID::new(); let id2 = SenderID::new();
let route1 = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); let route1 = Route::new(Include::Just(MessageID::new()), Include::All, Include::All);
let route2 = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); let route2 = Route::new(Include::Just(MessageID::new()), Include::All, Include::All);
routes.add(route1.clone(), id1.clone()); routes.add(route1.clone(), id1.clone());
routes.add(route2.clone(), id2.clone()); routes.add(route2.clone(), id2.clone());
let retrieve = Route::new(Include::All, Include::All, Include::All); let retrieve = Route::new(Include::All, Include::All, Include::All);
@@ -419,7 +422,7 @@ mod route_storeage {
while ids.len() < count { while ids.len() < count {
ids.insert(SenderID::new()); ids.insert(SenderID::new());
} }
let route = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); let route = Route::new(Include::Just(MessageID::new()), Include::All, Include::All);
for id in ids.iter() { for id in ids.iter() {
routes.add(route.clone(), id.clone()); routes.add(route.clone(), id.clone());
} }
@@ -434,7 +437,7 @@ mod route_storeage {
fn empty_routes_are_release_memory() { fn empty_routes_are_release_memory() {
let mut routes = RouteStorage::new(); let mut routes = RouteStorage::new();
let id = SenderID::new(); let id = SenderID::new();
let route = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); let route = Route::new(Include::Just(MessageID::new()), Include::All, Include::All);
routes.add(route.clone(), id.clone()); routes.add(route.clone(), id.clone());
routes.remove_sender_id(&id); routes.remove_sender_id(&id);
assert_eq!(routes.data.len(), 0); assert_eq!(routes.data.len(), 0);