Added a records function to client.
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
bcddc1047a
commit
0614c98221
@ -1,5 +1,7 @@
|
|||||||
use super::{DocDef, FieldType, Query};
|
use super::{DocDef, FieldType, Query};
|
||||||
|
use crate::{message::MessageAction, name::NameType};
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
pub enum UserAction {
|
pub enum UserAction {
|
||||||
CreateDocument(DocDef),
|
CreateDocument(DocDef),
|
||||||
Query(Query),
|
Query(Query),
|
||||||
@ -16,3 +18,12 @@ impl From<Query> for UserAction {
|
|||||||
Self::Query(value)
|
Self::Query(value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl MessageAction for UserAction {
|
||||||
|
fn doc_name(&self) -> &NameType {
|
||||||
|
match self {
|
||||||
|
Self::CreateDocument(data) => data.doc_name(),
|
||||||
|
Self::Query(data) => data.doc_name(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
39
src/lib.rs
39
src/lib.rs
@ -5,10 +5,7 @@ mod mtterror;
|
|||||||
mod name;
|
mod name;
|
||||||
mod queue;
|
mod queue;
|
||||||
|
|
||||||
use action::{
|
use action::*;
|
||||||
Action, Addition, CalcValue, Calculation, DocDef, Field, FieldType, MsgAction, Operand, Query,
|
|
||||||
UserAction,
|
|
||||||
};
|
|
||||||
use document::{Clock, CreateDoc, Session};
|
use document::{Clock, CreateDoc, Session};
|
||||||
use message::{wrapper::Message, MessageAction};
|
use message::{wrapper::Message, MessageAction};
|
||||||
use queue::{
|
use queue::{
|
||||||
@ -107,11 +104,41 @@ impl MoreThanText {
|
|||||||
output
|
output
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn request<UA>(&mut self, req: UA) -> Result<String, MTTError>
|
pub fn records<UA>(&mut self, request: UA) -> Result<Records, MTTError>
|
||||||
where
|
where
|
||||||
UA: Into<UserAction>,
|
UA: Into<UserAction>,
|
||||||
{
|
{
|
||||||
Ok("something".to_string())
|
let req = request.into();
|
||||||
|
let (tx, rx) = channel();
|
||||||
|
let sender_id = self.queue.add_sender(tx);
|
||||||
|
let doc_id = req.doc_name().clone();
|
||||||
|
let msg = Message::new(req);
|
||||||
|
let msg_id = msg.get_message_id();
|
||||||
|
let paths = [
|
||||||
|
Path::new(
|
||||||
|
Include::Just(msg_id.clone()),
|
||||||
|
Include::Just(doc_id.clone()),
|
||||||
|
Include::Just(Action::Records),
|
||||||
|
),
|
||||||
|
Path::new(
|
||||||
|
Include::Just(msg_id.clone()),
|
||||||
|
Include::Just(doc_id.clone()),
|
||||||
|
Include::Just(Action::Error),
|
||||||
|
),
|
||||||
|
];
|
||||||
|
for path in paths.iter() {
|
||||||
|
let reg_msg = Register::new(sender_id.clone(), RegMsg::AddRoute(path.clone()));
|
||||||
|
self.queue.send(Message::new(reg_msg));
|
||||||
|
rx.recv().unwrap(); // Wait for completion.
|
||||||
|
}
|
||||||
|
self.queue.send(msg);
|
||||||
|
let result = rx.recv().unwrap();
|
||||||
|
self.queue.remove_sender(&sender_id);
|
||||||
|
match result.get_action() {
|
||||||
|
MsgAction::Records(data) => Ok(data.clone()),
|
||||||
|
MsgAction::Error(err) => Err(err.clone()),
|
||||||
|
_ => unreachable!("should only receive records or errors"),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_document(&self, name: &str, id: &str) -> Result<String, MTTError> {
|
pub fn get_document(&self, name: &str, id: &str) -> Result<String, MTTError> {
|
||||||
|
|||||||
@ -21,11 +21,12 @@ fn errors_on_missing_page() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
#[ignore]
|
||||||
fn can_create_document() {
|
fn can_create_document() {
|
||||||
let mut mtt = MoreThanText::new();
|
let mut mtt = MoreThanText::new();
|
||||||
let doc_name = Name::english(Uuid::new_v4().to_string().as_str());
|
let doc_name = Name::english(Uuid::new_v4().to_string().as_str());
|
||||||
let mut docdef = DocDef::new(doc_name.clone());
|
let mut docdef = DocDef::new(doc_name.clone());
|
||||||
let field_name = Name::english(Uuid::new_v4().to_string().as_str());
|
let field_name = Name::english(Uuid::new_v4().to_string().as_str());
|
||||||
docdef.add_field(field_name.clone(), FieldType::Uuid);
|
docdef.add_field(field_name.clone(), FieldType::Uuid);
|
||||||
mtt.request(docdef);
|
mtt.records(docdef);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user