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 crate::{message::MessageAction, name::NameType};
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub enum UserAction {
|
||||
CreateDocument(DocDef),
|
||||
Query(Query),
|
||||
@ -16,3 +18,12 @@ impl From<Query> for UserAction {
|
||||
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 queue;
|
||||
|
||||
use action::{
|
||||
Action, Addition, CalcValue, Calculation, DocDef, Field, FieldType, MsgAction, Operand, Query,
|
||||
UserAction,
|
||||
};
|
||||
use action::*;
|
||||
use document::{Clock, CreateDoc, Session};
|
||||
use message::{wrapper::Message, MessageAction};
|
||||
use queue::{
|
||||
@ -107,11 +104,41 @@ impl MoreThanText {
|
||||
output
|
||||
}
|
||||
|
||||
pub fn request<UA>(&mut self, req: UA) -> Result<String, MTTError>
|
||||
pub fn records<UA>(&mut self, request: UA) -> Result<Records, MTTError>
|
||||
where
|
||||
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> {
|
||||
|
||||
@ -21,11 +21,12 @@ fn errors_on_missing_page() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn can_create_document() {
|
||||
let mut mtt = MoreThanText::new();
|
||||
let doc_name = Name::english(Uuid::new_v4().to_string().as_str());
|
||||
let mut docdef = DocDef::new(doc_name.clone());
|
||||
let field_name = Name::english(Uuid::new_v4().to_string().as_str());
|
||||
docdef.add_field(field_name.clone(), FieldType::Uuid);
|
||||
mtt.request(docdef);
|
||||
mtt.records(docdef);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user