From bfab0de564a4e70ab91cc1d3f8fbc632f45f30fc Mon Sep 17 00:00:00 2001 From: Lucas Vas Date: Thu, 20 Nov 2025 10:57:20 -0500 Subject: [PATCH] feat: implement a new function for ComparisonData --- src/common/comparison/base.rs | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/common/comparison/base.rs b/src/common/comparison/base.rs index d8ea50c..d32178a 100644 --- a/src/common/comparison/base.rs +++ b/src/common/comparison/base.rs @@ -5,7 +5,7 @@ use super::{ use crate::common::{ExpandableInfo, ValueType}; use serde::{Deserialize, Serialize}; -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Debug, Clone)] pub struct ComparisonData { /// Each comparison will have a unique ID. pub id: String, @@ -23,13 +23,31 @@ pub struct ComparisonData { } impl ComparisonData { + pub fn new( + id: impl Into, + member: impl Into, + comparison: ComparisonType, + target_value: ValueType, + category: impl Into, + display_text: impl Into, + ) -> Self { + Self { + id: id.into(), + member: member.into(), + comparison, + target_value, + category: category.into(), + display_text: display_text.into(), + } + } + pub fn compare(&self, student_data: &ExpandableInfo) -> Result { let value = student_data.data.get(&self.member).unwrap(); self.comparison.evaluate(value, &self.target_value) } } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Debug, Clone)] pub enum ComparisonType { Number(NumberComparison), Text(TextComparison),