Added document name to query.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 2s

This commit is contained in:
2026-02-09 19:28:22 -05:00
parent eca86a53b9
commit aae2548da3
8 changed files with 135 additions and 71 deletions

View File

@@ -2,6 +2,7 @@ use super::{DocDef, Query, UserAction};
use crate::{
message::wrapper::{Addition, Delete, Records, Reply, Update},
mtterror::MTTError,
name::NameType,
queue::data_director::Register,
};
@@ -23,6 +24,15 @@ pub enum MsgAction {
Update(Update),
}
impl MsgAction {
fn doc_name(&self) -> NameType {
match self {
Self::Query(data) => data.doc_name(),
_ => NameType::None,
}
}
}
impl From<Addition> for MsgAction {
fn from(value: Addition) -> Self {
MsgAction::Addition(value)
@@ -128,10 +138,11 @@ mod msgactions {
#[test]
fn turn_query_into_action() {
let value = Query::new();
let name = Name::english(Uuid::new_v4().to_string().as_str());
let value = Query::new(name.clone());
let result: MsgAction = value.into();
match result {
MsgAction::Query(_) => {}
MsgAction::Query(data) => assert_eq!(data.doc_name(), name.into()),
_ => unreachable!("Got {:?}: dhould have been query", result),
}
}

View File

@@ -1,19 +1,32 @@
use super::Calculation;
use crate::name::NameType;
use std::collections::{HashMap, HashSet};
use super::Calculation;
#[derive(Clone, Debug)]
pub struct Query {
doc_name: NameType,
data: HashMap<NameType, Calculation>,
}
impl Query {
pub fn new() -> Self {
pub fn new<NT>(name: NT) -> Self
where
NT: Into<NameType>,
{
Self {
doc_name: name.into(),
data: HashMap::new(),
}
}
pub fn internal() -> Self {
Self::new(NameType::None)
}
pub fn doc_name(&self) -> NameType {
self.doc_name.clone()
}
pub fn add<NT>(&mut self, name: NT, operation: Calculation)
where
NT: Into<NameType>,
@@ -45,9 +58,35 @@ impl Query {
#[cfg(test)]
mod queries {
use super::*;
use crate::{action::{Field, Operand}, name::Name};
use crate::{
action::{Field, Operand},
name::Name,
};
use uuid::Uuid;
#[test]
fn is_default_query_empty() {
let name = Name::english(Uuid::new_v4().to_string().as_str());
let qry = Query::new(name.clone());
let result = qry.doc_name();
assert_eq!(
result,
name.clone().into(),
"got {:?} should be {:?}",
result,
name
);
assert_eq!(qry.iter().count(), 0, "query should be empty");
}
#[test]
fn does_internal_queries_return_none() {
let qry = Query::internal();
let result = qry.doc_name();
assert_eq!(result, NameType::None, "got {:?} should be none", result);
assert_eq!(qry.iter().count(), 0, "query should be empty");
}
#[test]
fn holds_calculation_to_run_query() {
let name = Name::english(Uuid::new_v4().to_string().as_str());
@@ -56,7 +95,7 @@ mod queries {
while bad_data == data {
bad_data = Uuid::new_v4();
}
let mut query = Query::new();
let mut query = Query::new(Name::english("something"));
let mut calc = Calculation::new(Operand::Equal);
calc.add_value(data.clone()).unwrap();
query.add(name.clone(), calc);