tktax-analysis 0.2.2

A robust Rust crate for financial account analysis, histogram generation, donation processing, and more.
Documentation
// ---------------- [ File: tktax-analysis/src/donations_analysis_hooks.rs ]
crate::ix!();

pub type CreateDonationBuilderFn = fn(
    amazon_item_map:   Option<AmazonItemMap>, 
    donation_date:     &NaiveDate,
    donation_location: &DonationLocation,
    max_item_age:      &NaiveDate) -> DonationBuilder;

pub type CreateAmazonItemMapFn = fn(config: &AmazonConfig) -> Option<AmazonItemMap>;
pub type CreateDonationsFn     = fn(builder: &DonationBuilder) -> Vec<Donation>;

#[derive(Clone,Builder,Getters)]
#[getset(get="pub")]
pub struct DonationsHooks {
    create_donation_builder_fn: CreateDonationBuilderFn,
    create_amazon_item_map_fn:  CreateAmazonItemMapFn,
    create_donations_fn:        CreateDonationsFn,
}

impl DonationsHooks {

    pub fn create_donations(&self, program_config: &ProgramConfig, donation_config: &DonationConfig) 
        -> Vec<Donation> 
    {
        let amazon_item_map = match program_config.amazon() {
            Some(amazon_config) => (self.create_amazon_item_map_fn)(&amazon_config),
            None => None,
        };

        let donation_builder = (self.create_donation_builder_fn)(
            amazon_item_map, 
            &donation_config.donation_date(),
            &donation_config.donation_location(),
            &donation_config.max_item_age()
        );

        (self.create_donations_fn)(&donation_builder)
    }
}