Made records produce a document name.
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:
parent
115910120c
commit
62335d8682
@ -31,9 +31,14 @@ impl MessageAction for MsgAction {
|
|||||||
fn doc_name(&self) -> &NameType {
|
fn doc_name(&self) -> &NameType {
|
||||||
match self {
|
match self {
|
||||||
Self::Addition(data) => data.doc_name(),
|
Self::Addition(data) => data.doc_name(),
|
||||||
Self::Query(data) => data.doc_name(),
|
|
||||||
Self::Create(data) => data.doc_name(),
|
Self::Create(data) => data.doc_name(),
|
||||||
Self::Error(data) => data.doc_name(),
|
Self::Error(data) => data.doc_name(),
|
||||||
|
Self::OnAddition(data) => data.doc_name(),
|
||||||
|
Self::OnDelete(data) => data.doc_name(),
|
||||||
|
Self::OnQuery(data) => data.doc_name(),
|
||||||
|
Self::OnUpdate(data) => data.doc_name(),
|
||||||
|
Self::Query(data) => data.doc_name(),
|
||||||
|
Self::Records(data) => data.doc_name(),
|
||||||
_ => &NameType::None,
|
_ => &NameType::None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,21 +22,27 @@ impl Clock {
|
|||||||
Self { queue: queue }
|
Self { queue: queue }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn doc_names() -> Vec<Name> {
|
||||||
|
vec![Name::english("clock")]
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
fn get_name() -> Name {
|
fn get_name() -> Name {
|
||||||
Name::english("clock")
|
Name::english("clock")
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
fn gen_message() -> Message {
|
fn gen_message() -> Message {
|
||||||
Message::new(
|
Message::new(
|
||||||
Clock::get_name(),
|
Clock::doc_names()[0].clone(),
|
||||||
MsgAction::OnUpdate(Records::new(Names::new())),
|
MsgAction::OnUpdate(Records::new(Clock::doc_names(), Names::new())),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_path() -> Path {
|
pub fn get_path() -> Path {
|
||||||
Path::new(
|
Path::new(
|
||||||
Include::All,
|
Include::All,
|
||||||
Include::Just(Clock::get_name().into()),
|
Include::Just(Clock::doc_names()[0].clone().into()),
|
||||||
Include::Just(Action::OnUpdate),
|
Include::Just(Action::OnUpdate),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -45,7 +51,7 @@ impl Clock {
|
|||||||
let clock = Clock::new(queue.clone());
|
let clock = Clock::new(queue.clone());
|
||||||
let (tx, rx) = channel();
|
let (tx, rx) = channel();
|
||||||
let id = queue.add_sender(tx);
|
let id = queue.add_sender(tx);
|
||||||
let reg_msg = Register::new(id, RegMsg::AddDocName([Clock::get_name()].to_vec()));
|
let reg_msg = Register::new(id, RegMsg::AddDocName(Clock::doc_names()));
|
||||||
let msg = Message::new(NameType::None, reg_msg.clone());
|
let msg = Message::new(NameType::None, reg_msg.clone());
|
||||||
queue.send(msg);
|
queue.send(msg);
|
||||||
rx.recv().unwrap();
|
rx.recv().unwrap();
|
||||||
@ -99,7 +105,7 @@ mod clocks {
|
|||||||
let end = Utc::now();
|
let end = Utc::now();
|
||||||
assert!((end - start) > TimeDelta::seconds(1));
|
assert!((end - start) > TimeDelta::seconds(1));
|
||||||
assert!((end - start) < TimeDelta::seconds(2));
|
assert!((end - start) < TimeDelta::seconds(2));
|
||||||
let reg_request = Register::new(id, RegMsg::GetNameID(Clock::get_name()));
|
let reg_request = Register::new(id, RegMsg::GetNameID(Clock::doc_names()[0].clone()));
|
||||||
queue.send(Message::new(NameType::None, reg_request));
|
queue.send(Message::new(NameType::None, reg_request));
|
||||||
rx.recv_timeout(TIMEOUT).unwrap();
|
rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
for msg in holder.iter() {
|
for msg in holder.iter() {
|
||||||
|
|||||||
@ -616,7 +616,10 @@ impl DocumentFile {
|
|||||||
};
|
};
|
||||||
holder.insert(field_id.clone(), corrected.clone());
|
holder.insert(field_id.clone(), corrected.clone());
|
||||||
}
|
}
|
||||||
let mut records = Records::new(self.docdef.get_field_names().clone());
|
let mut records = Records::new(
|
||||||
|
self.docdef.get_document_names().clone(),
|
||||||
|
self.docdef.get_field_names().clone(),
|
||||||
|
);
|
||||||
if !holder.is_empty() {
|
if !holder.is_empty() {
|
||||||
let mut oid = Oid::new();
|
let mut oid = Oid::new();
|
||||||
while self.docs.contains_key(&oid) {
|
while self.docs.contains_key(&oid) {
|
||||||
@ -653,7 +656,11 @@ impl DocumentFile {
|
|||||||
}
|
}
|
||||||
self.docs.remove(oid);
|
self.docs.remove(oid);
|
||||||
}
|
}
|
||||||
let rec = Records::with_data(self.docdef.get_field_names().clone(), records);
|
let rec = Records::with_data(
|
||||||
|
self.docdef.get_document_names().clone(),
|
||||||
|
self.docdef.get_field_names().clone(),
|
||||||
|
records,
|
||||||
|
);
|
||||||
self.queue.send(msg.response(rec.clone()));
|
self.queue.send(msg.response(rec.clone()));
|
||||||
self.queue.send(msg.response(MsgAction::OnDelete(rec)));
|
self.queue.send(msg.response(MsgAction::OnDelete(rec)));
|
||||||
}
|
}
|
||||||
@ -722,7 +729,11 @@ impl DocumentFile {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let recs = Records::with_data(self.docdef.get_field_names().clone(), records);
|
let recs = Records::with_data(
|
||||||
|
self.docdef.get_document_names().clone(),
|
||||||
|
self.docdef.get_field_names().clone(),
|
||||||
|
records,
|
||||||
|
);
|
||||||
self.queue.send(msg.response(recs.clone()));
|
self.queue.send(msg.response(recs.clone()));
|
||||||
self.queue.send(msg.response(MsgAction::OnQuery(recs)));
|
self.queue.send(msg.response(MsgAction::OnQuery(recs)));
|
||||||
}
|
}
|
||||||
@ -769,7 +780,11 @@ impl DocumentFile {
|
|||||||
}
|
}
|
||||||
self.docs.insert(oid.clone(), new_rec.clone());
|
self.docs.insert(oid.clone(), new_rec.clone());
|
||||||
}
|
}
|
||||||
let recs = Records::with_data(self.docdef.get_field_names().clone(), updates);
|
let recs = Records::with_data(
|
||||||
|
self.docdef.get_document_names().clone(),
|
||||||
|
self.docdef.get_field_names().clone(),
|
||||||
|
updates,
|
||||||
|
);
|
||||||
self.queue
|
self.queue
|
||||||
.send(msg.response(MsgAction::OnUpdate(recs.clone())));
|
.send(msg.response(MsgAction::OnUpdate(recs.clone())));
|
||||||
Ok(recs)
|
Ok(recs)
|
||||||
@ -822,8 +837,8 @@ impl DocumentFile {
|
|||||||
mod document_files {
|
mod document_files {
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::{
|
use crate::{
|
||||||
action::{Addition, Operand},
|
action::{Addition, FieldType, Operand},
|
||||||
document::field::FieldType,
|
document::Clock,
|
||||||
message::wrapper::Delete,
|
message::wrapper::Delete,
|
||||||
name::{Name, Names},
|
name::{Name, Names},
|
||||||
support_tests::TIMEOUT,
|
support_tests::TIMEOUT,
|
||||||
@ -2406,7 +2421,7 @@ mod document_files {
|
|||||||
}
|
}
|
||||||
let trigger = Message::new(
|
let trigger = Message::new(
|
||||||
Name::english("clock"),
|
Name::english("clock"),
|
||||||
MsgAction::OnUpdate(Records::new(Names::new())),
|
MsgAction::OnUpdate(Records::new(Clock::doc_names(), Names::new())),
|
||||||
);
|
);
|
||||||
queue.send(trigger.clone());
|
queue.send(trigger.clone());
|
||||||
sleep(TIMEOUT);
|
sleep(TIMEOUT);
|
||||||
|
|||||||
@ -199,7 +199,6 @@ impl PathAction {
|
|||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct DocDef {
|
pub struct DocDef {
|
||||||
doc_name: NameType,
|
|
||||||
doc_names: Vec<Name>,
|
doc_names: Vec<Name>,
|
||||||
field_names: Names,
|
field_names: Names,
|
||||||
fields: HashMap<Uuid, FieldSetting>,
|
fields: HashMap<Uuid, FieldSetting>,
|
||||||
@ -257,7 +256,6 @@ impl DocDef {
|
|||||||
),
|
),
|
||||||
];
|
];
|
||||||
Self {
|
Self {
|
||||||
doc_name: NameType::None,
|
|
||||||
doc_names: names,
|
doc_names: names,
|
||||||
field_names: Names::new(),
|
field_names: Names::new(),
|
||||||
fields: HashMap::new(),
|
fields: HashMap::new(),
|
||||||
@ -376,7 +374,7 @@ impl DocDef {
|
|||||||
|
|
||||||
impl MessageAction for DocDef {
|
impl MessageAction for DocDef {
|
||||||
fn doc_name(&self) -> &NameType {
|
fn doc_name(&self) -> &NameType {
|
||||||
&self.doc_name
|
&NameType::None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
action::Field,
|
action::Field,
|
||||||
|
message::MessageAction,
|
||||||
mtterror::{ErrorID, MTTError},
|
mtterror::{ErrorID, MTTError},
|
||||||
name::{Name, NameType, Names},
|
name::{Name, NameType, Names},
|
||||||
};
|
};
|
||||||
@ -142,20 +143,23 @@ impl Record {
|
|||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct Records {
|
pub struct Records {
|
||||||
|
doc_name: NameType,
|
||||||
names: Names,
|
names: Names,
|
||||||
data: InternalRecords,
|
data: InternalRecords,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Records {
|
impl Records {
|
||||||
pub fn new(names: Names) -> Self {
|
pub fn new(doc_names: Vec<Name>, names: Names) -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
doc_name: doc_names[0].clone().into(),
|
||||||
names: names,
|
names: names,
|
||||||
data: InternalRecords::new(),
|
data: InternalRecords::new(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn with_data(names: Names, records: InternalRecords) -> Self {
|
pub fn with_data(doc_names: Vec<Name>, names: Names, records: InternalRecords) -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
doc_name: doc_names[0].clone().into(),
|
||||||
names: names,
|
names: names,
|
||||||
data: records,
|
data: records,
|
||||||
}
|
}
|
||||||
@ -178,6 +182,12 @@ impl Records {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl MessageAction for Records {
|
||||||
|
fn doc_name(&self) -> &NameType {
|
||||||
|
&self.doc_name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct RecordIter {
|
struct RecordIter {
|
||||||
names: Names,
|
names: Names,
|
||||||
recs: Vec<InternalRecord>,
|
recs: Vec<InternalRecord>,
|
||||||
@ -202,3 +212,24 @@ impl Iterator for RecordIter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod records {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn does_recourds_store_document_name() {
|
||||||
|
let doc_name = Name::english(uuid::Uuid::new_v4().to_string().as_str());
|
||||||
|
let expected: NameType = doc_name.clone().into();
|
||||||
|
let recs = Records::new(vec![doc_name.clone()], Names::new());
|
||||||
|
assert_eq!(recs.doc_name(), &expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn does_records_with_data_store_document_name() {
|
||||||
|
let doc_name = Name::english(uuid::Uuid::new_v4().to_string().as_str());
|
||||||
|
let expected: NameType = doc_name.clone().into();
|
||||||
|
let recs = Records::with_data(vec![doc_name.clone()], Names::new(), InternalRecords::new());
|
||||||
|
assert_eq!(recs.doc_name(), &expected);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -266,7 +266,6 @@ impl Operation {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct Reply {
|
pub struct Reply {
|
||||||
|
|||||||
@ -131,7 +131,7 @@ mod paths {
|
|||||||
(Name::english("one"), MsgAction::Show),
|
(Name::english("one"), MsgAction::Show),
|
||||||
(
|
(
|
||||||
Name::english("two"),
|
Name::english("two"),
|
||||||
MsgAction::Records(Records::new(Names::new())),
|
MsgAction::Records(Records::new(vec![Name::english("two")], Names::new())),
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
for item in input.iter() {
|
for item in input.iter() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user