Made message ids its own structure.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
This commit is contained in:
@@ -2,6 +2,8 @@ pub mod wrapper;
|
||||
|
||||
use crate::name::NameType;
|
||||
|
||||
pub use wrapper::MessageID;
|
||||
|
||||
pub trait MessageAction {
|
||||
fn doc_name(&self) -> &NameType {
|
||||
&NameType::None
|
||||
|
||||
@@ -12,10 +12,34 @@ use std::{
|
||||
};
|
||||
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)]
|
||||
pub struct Message {
|
||||
msg_id: Uuid,
|
||||
// document_id: NameType,
|
||||
msg_id: MessageID,
|
||||
action: MsgAction,
|
||||
route: Route,
|
||||
// session: Option<?>
|
||||
@@ -27,13 +51,13 @@ impl Message {
|
||||
A: Into<MsgAction>,
|
||||
{
|
||||
Self {
|
||||
msg_id: Uuid::new_v4(),
|
||||
msg_id: MessageID::new(),
|
||||
action: action.into(),
|
||||
route: Route::default(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_message_id(&self) -> &Uuid {
|
||||
pub fn get_message_id(&self) -> &MessageID {
|
||||
&self.msg_id
|
||||
}
|
||||
|
||||
@@ -158,11 +182,11 @@ mod messages {
|
||||
|
||||
#[test]
|
||||
fn is_the_message_id_random() {
|
||||
let mut ids: Vec<Uuid> = Vec::new();
|
||||
let mut ids: Vec<MessageID> = Vec::new();
|
||||
for _ in 0..5 {
|
||||
let msg = Message::new(Query::new(Name::english("test")));
|
||||
let id = msg.get_message_id().clone();
|
||||
assert!(!ids.contains(&id), "{:?} containts {}", ids, id);
|
||||
assert!(!ids.contains(&id), "{:?} containts {:?}", ids, id);
|
||||
ids.push(id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
use super::SenderID;
|
||||
use crate::{
|
||||
action::{Action, MsgAction},
|
||||
message::{wrapper::Message, MessageAction},
|
||||
message::{
|
||||
wrapper::{Message, MessageID},
|
||||
MessageAction,
|
||||
},
|
||||
mtterror::MTTError,
|
||||
name::{Name, NameID, NameType, Names},
|
||||
queue::router::Queue,
|
||||
@@ -121,13 +124,13 @@ mod registries {
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct Path {
|
||||
pub msg_id: Include<Uuid>,
|
||||
pub msg_id: Include<MessageID>,
|
||||
pub doc: Include<NameType>,
|
||||
pub action: Include<Action>,
|
||||
}
|
||||
|
||||
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 {
|
||||
msg_id: id,
|
||||
doc: doc,
|
||||
@@ -140,7 +143,7 @@ impl Path {
|
||||
NT: Into<NameType>,
|
||||
{
|
||||
Self {
|
||||
msg_id: Include::Just(Uuid::new_v4()),
|
||||
msg_id: Include::Just(MessageID::new()),
|
||||
doc: Include::Just(name.into()),
|
||||
action: Include::Just(action.into()),
|
||||
}
|
||||
@@ -183,7 +186,7 @@ mod paths {
|
||||
#[test]
|
||||
fn message_ids_are_unique_for_message_paths() {
|
||||
let count = 10;
|
||||
let mut ids: Vec<Uuid> = Vec::new();
|
||||
let mut ids: Vec<MessageID> = Vec::new();
|
||||
for _ in 0..count {
|
||||
let path =
|
||||
Path::for_message(NameType::None, &MsgAction::Show(Show::new(NameType::None)));
|
||||
@@ -201,11 +204,11 @@ mod paths {
|
||||
pub struct Route {
|
||||
pub action: Include<Action>,
|
||||
pub doc_id: Include<NameID>,
|
||||
pub msg_id: Include<Uuid>,
|
||||
pub msg_id: Include<MessageID>,
|
||||
}
|
||||
|
||||
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 {
|
||||
action: action,
|
||||
doc_id: doc,
|
||||
@@ -253,7 +256,7 @@ impl From<&RouteID> for Route {
|
||||
pub struct RouteID {
|
||||
action: Option<Action>,
|
||||
doc_id: Option<NameID>,
|
||||
msg_id: Option<Uuid>,
|
||||
msg_id: Option<MessageID>,
|
||||
}
|
||||
|
||||
impl From<Route> for RouteID {
|
||||
@@ -333,8 +336,8 @@ mod route_storeage {
|
||||
let mut routes = RouteStorage::new();
|
||||
let id1 = SenderID::new();
|
||||
let id2 = SenderID::new();
|
||||
let route1 = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All);
|
||||
let route2 = 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(MessageID::new()), Include::All, Include::All);
|
||||
let route_id1 = routes.add(route1.clone(), id1.clone());
|
||||
let route_id2 = routes.add(route2.clone(), id2.clone());
|
||||
let result1 = routes.get(route1.clone());
|
||||
@@ -360,7 +363,7 @@ mod route_storeage {
|
||||
#[test]
|
||||
fn returns_empty_set_when_nothing_is_available() {
|
||||
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);
|
||||
assert_eq!(result.len(), 0);
|
||||
}
|
||||
@@ -373,7 +376,7 @@ mod route_storeage {
|
||||
while ids.len() < count {
|
||||
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() {
|
||||
routes.add(route.clone(), id.clone());
|
||||
}
|
||||
@@ -386,7 +389,7 @@ mod route_storeage {
|
||||
let count = 5;
|
||||
let mut routes = RouteStorage::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 {
|
||||
routes.add(route.clone(), id.clone());
|
||||
}
|
||||
@@ -400,8 +403,8 @@ mod route_storeage {
|
||||
let mut routes = RouteStorage::new();
|
||||
let id1 = SenderID::new();
|
||||
let id2 = SenderID::new();
|
||||
let route1 = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All);
|
||||
let route2 = 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(MessageID::new()), Include::All, Include::All);
|
||||
routes.add(route1.clone(), id1.clone());
|
||||
routes.add(route2.clone(), id2.clone());
|
||||
let retrieve = Route::new(Include::All, Include::All, Include::All);
|
||||
@@ -419,7 +422,7 @@ mod route_storeage {
|
||||
while ids.len() < count {
|
||||
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() {
|
||||
routes.add(route.clone(), id.clone());
|
||||
}
|
||||
@@ -434,7 +437,7 @@ mod route_storeage {
|
||||
fn empty_routes_are_release_memory() {
|
||||
let mut routes = RouteStorage::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.remove_sender_id(&id);
|
||||
assert_eq!(routes.data.len(), 0);
|
||||
|
||||
Reference in New Issue
Block a user