Added a records function to client.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
Jeff Baskin 2026-02-18 12:00:39 -05:00
parent bcddc1047a
commit 0614c98221
3 changed files with 46 additions and 7 deletions

View File

@ -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(),
}
}
}

View File

@ -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> {

View File

@ -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);
}