schema_core/config/
aggregate.rs1use serde::{Deserialize, Serialize};
2
3use crate::common;
4
5use super::{AggregateKey, Filter, FlussoType};
6
7#[derive(Debug, Clone, Hash, Serialize, Deserialize)]
10pub struct Aggregate {
11 pub table: common::TableName,
12 pub op: AggregateOp,
13 pub key: AggregateKey,
14 #[serde(default, skip_serializing_if = "Option::is_none")]
18 pub value_type: Option<FlussoType>,
19 #[serde(default, skip_serializing_if = "Option::is_none")]
20 pub filters: Option<Vec<Filter>>,
21}
22
23#[derive(Debug, Clone, Hash, Serialize, Deserialize)]
24#[serde(rename_all = "snake_case")]
25pub enum AggregateOp {
26 Count,
27 Sum(common::ColumnName),
28 Avg(common::ColumnName),
29 Min(common::ColumnName),
30 Max(common::ColumnName),
31}