Moved update into action module.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 0s

This commit is contained in:
2026-02-16 09:53:04 -05:00
parent d47124656f
commit f1eb397d3b
8 changed files with 127 additions and 72 deletions

87
src/action/update.rs Normal file
View File

@@ -0,0 +1,87 @@
use super::{Query, RequestData};
use crate::{message::MessageAction, name::NameType};
#[derive(Clone, Debug)]
pub struct Update {
doc_name: NameType,
query: Query,
values: RequestData,
}
impl Update {
pub fn new<NT>(name: NT) -> Self
where
NT: Into<NameType>,
{
Self {
doc_name: name.into(),
query: Query::internal(),
values: RequestData::new(),
}
}
pub fn get_query(&self) -> &Query {
&self.query
}
pub fn get_query_mut(&mut self) -> &mut Query {
&mut self.query
}
pub fn get_values(&self) -> &RequestData {
&self.values
}
pub fn get_values_mut(&mut self) -> &mut RequestData {
&mut self.values
}
}
impl MessageAction for Update {
fn doc_name(&self) -> &NameType {
&self.doc_name
}
}
#[cfg(test)]
mod updates {
use super::*;
use crate::{
action::{Calculation, Operand},
name::test_support::random_name,
};
#[test]
fn is_default_update_empty() {
let name = random_name();
let expected: NameType = name.clone().into();
let update = Update::new(name);
assert_eq!(update.doc_name(), &expected);
assert_eq!(update.get_query().iter().count(), 0);
assert_eq!(update.get_values().iter().count(), 0);
}
#[test]
fn can_update_query_be_altered() {
let name = random_name();
let expected: NameType = name.clone().into();
let mut update = Update::new(name);
let query = update.get_query_mut();
let mut calc = Calculation::new(Operand::Equal);
calc.add_value("something").unwrap();
query.add(random_name(), calc);
assert_eq!(update.doc_name(), &expected);
assert_eq!(update.get_query().iter().count(), 1);
}
#[test]
fn can_update_data_be_altered() {
let name = random_name();
let expected: NameType = name.clone().into();
let mut update = Update::new(name);
let values = update.get_values_mut();
values.add_field(random_name(), "something");
assert_eq!(update.doc_name(), &expected);
assert_eq!(update.get_values().iter().count(), 1);
}
}