Added document name to query.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 2s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 2s
This commit is contained in:
@@ -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),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user