From d422e832753fffc25e88ff0428f8c19c7f368bd2 Mon Sep 17 00:00:00 2001 From: RunasSudo Date: Wed, 21 May 2025 19:18:14 +1000 Subject: [PATCH] Rename Dependency.dependency to Dependency.product --- src/reporting/builders.rs | 10 +++--- src/reporting/calculator.rs | 61 +++++++++++++++++++------------------ 2 files changed, 36 insertions(+), 35 deletions(-) diff --git a/src/reporting/builders.rs b/src/reporting/builders.rs index 9779e69..614f749 100644 --- a/src/reporting/builders.rs +++ b/src/reporting/builders.rs @@ -270,18 +270,18 @@ impl UpdateBalancesAt { // Check for BalancesAt -> Transactions let dependencies_for_step = dependencies.dependencies_for_step(&step.id()); if dependencies_for_step.len() == 1 - && dependencies_for_step[0].dependency.kind == ReportingProductKind::BalancesAt + && dependencies_for_step[0].product.kind == ReportingProductKind::BalancesAt { return true; } // Check if BalancesBetween -> Transactions and BalancesAt is available if dependencies_for_step.len() == 1 - && dependencies_for_step[0].dependency.kind + && dependencies_for_step[0].product.kind == ReportingProductKind::BalancesBetween { let date_end = dependencies_for_step[0] - .dependency + .product .args .downcast_ref::() .unwrap() @@ -289,7 +289,7 @@ impl UpdateBalancesAt { match has_step_or_can_build( &ReportingProductId { - name: dependencies_for_step[0].dependency.name, + name: dependencies_for_step[0].product.name, kind: ReportingProductKind::BalancesAt, args: Box::new(DateArgs { date: date_end }), }, @@ -398,7 +398,7 @@ impl UpdateBalancesBetween { // Check for BalancesBetween -> Transactions let dependencies_for_step = dependencies.dependencies_for_step(&step.id()); if dependencies_for_step.len() == 1 - && dependencies_for_step[0].dependency.kind + && dependencies_for_step[0].product.kind == ReportingProductKind::BalancesBetween { return true; diff --git a/src/reporting/calculator.rs b/src/reporting/calculator.rs index dc7d11e..a06369b 100644 --- a/src/reporting/calculator.rs +++ b/src/reporting/calculator.rs @@ -35,9 +35,9 @@ impl ReportingGraphDependencies { if !self .vec .iter() - .any(|d| d.step == step && d.dependency == dependency) + .any(|d| d.step == step && d.product == dependency) { - self.vec.push(Dependency { step, dependency }); + self.vec.push(Dependency { step, product: dependency }); } } @@ -65,10 +65,11 @@ impl ReportingGraphDependencies { } } +/// Represents that a [ReportingStep] depends on a [ReportingProduct] #[derive(Debug)] pub struct Dependency { pub step: ReportingStepId, - pub dependency: ReportingProductId, + pub product: ReportingProductId, } #[derive(Debug)] @@ -147,12 +148,12 @@ fn would_be_ready_to_execute( // Check if the dependency has been produced by a previous step for previous_step in previous_steps { - if steps[*previous_step].id().name == dependency.dependency.name - && steps[*previous_step].id().args == dependency.dependency.args + if steps[*previous_step].id().name == dependency.product.name + && steps[*previous_step].id().args == dependency.product.args && steps[*previous_step] .id() .product_kinds - .contains(&dependency.dependency.kind) + .contains(&dependency.product.kind) { continue 'check_each_dependency; } @@ -197,33 +198,33 @@ pub fn solve_for( todo!(); } if !steps.iter().any(|s| { - s.id().name == dependency.dependency.name - && s.id().args == dependency.dependency.args - && s.id().product_kinds.contains(&dependency.dependency.kind) + s.id().name == dependency.product.name + && s.id().args == dependency.product.args + && s.id().product_kinds.contains(&dependency.product.kind) }) { // Try lookup function if let Some(lookup_key) = context.step_lookup_fn.keys().find(|(name, kinds)| { - *name == dependency.dependency.name - && kinds.contains(&dependency.dependency.kind) + *name == dependency.product.name + && kinds.contains(&dependency.product.kind) }) { let (takes_args_fn, from_args_fn) = context.step_lookup_fn.get(lookup_key).unwrap(); - if takes_args_fn(&dependency.dependency.args) { - let new_step = from_args_fn(dependency.dependency.args.clone()); + if takes_args_fn(&dependency.product.args) { + let new_step = from_args_fn(dependency.product.args.clone()); // Check new step meets the dependency - if new_step.id().name != dependency.dependency.name { - panic!("Unexpected step returned from lookup function (expected name {}, got {})", dependency.dependency.name, new_step.id().name); + if new_step.id().name != dependency.product.name { + panic!("Unexpected step returned from lookup function (expected name {}, got {})", dependency.product.name, new_step.id().name); } - if new_step.id().args != dependency.dependency.args { - panic!("Unexpected step returned from lookup function {} (expected args {:?}, got {:?})", dependency.dependency.name, dependency.dependency.args, new_step.id().args); + if new_step.id().args != dependency.product.args { + panic!("Unexpected step returned from lookup function {} (expected args {:?}, got {:?})", dependency.product.name, dependency.product.args, new_step.id().args); } if !new_step .id() .product_kinds - .contains(&dependency.dependency.kind) + .contains(&dependency.product.kind) { - panic!("Unexpected step returned from lookup function {} (expected kind {:?}, got {:?})", dependency.dependency.name, dependency.dependency.kind, new_step.id().product_kinds); + panic!("Unexpected step returned from lookup function {} (expected kind {:?}, got {:?})", dependency.product.name, dependency.product.kind, new_step.id().product_kinds); } new_steps.push(new_step); @@ -234,17 +235,17 @@ pub fn solve_for( // No explicit step for product - try builders for builder in context.step_dynamic_builders.iter() { if (builder.can_build)( - dependency.dependency.name, - dependency.dependency.kind, - &dependency.dependency.args, + dependency.product.name, + dependency.product.kind, + &dependency.product.args, &steps, &dependencies, &context, ) { new_steps.push((builder.build)( - dependency.dependency.name, - dependency.dependency.kind, - dependency.dependency.args.clone(), + dependency.product.name, + dependency.product.kind, + dependency.product.args.clone(), &steps, &dependencies, &context, @@ -283,19 +284,19 @@ pub fn solve_for( return Err(ReportingCalculationError::UnknownStep { message: format!( "No implementation for step {} which {} is a dependency of", - dependency.step, dependency.dependency + dependency.step, dependency.product ), }); } if !steps.iter().any(|s| { - s.id().name == dependency.dependency.name - && s.id().args == dependency.dependency.args - && s.id().product_kinds.contains(&dependency.dependency.kind) + s.id().name == dependency.product.name + && s.id().args == dependency.product.args + && s.id().product_kinds.contains(&dependency.product.kind) }) { return Err(ReportingCalculationError::NoStepForProduct { message: format!( "No step builds product {} wanted by {}", - dependency.dependency, dependency.step + dependency.product, dependency.step ), }); }