use std::fmt::Debug;
use crate::{Headers, Row};
mod avg;
mod count;
mod default_max;
mod default_min;
mod default_sum;
mod last;
mod max;
mod min;
mod sum;
pub use avg::Avg;
pub use count::Count;
pub use default_max::DefaultMax;
pub use default_min::DefaultMin;
pub use default_sum::DefaultSum;
pub use last::Last;
pub use max::Max;
pub use min::Min;
pub use sum::Sum;
#[derive(Debug)]
pub enum AggregateError {
MissingColumn(String),
ValueError {
row: Row,
index: usize,
aggregate: String,
},
}
pub trait Aggregate: Debug {
fn update(&mut self, headers: &Headers, row: &Row) -> Result<(), AggregateError>;
fn value(&self) -> String;
fn colname(&self) -> &str;
}