use crate::{
common::CommitVersion,
interface::catalog::{flow::FlowNodeId, schema::SchemaId},
value::column::columns::Columns,
};
#[derive(Debug, Clone)]
pub enum ChangeOrigin {
Schema(SchemaId),
Flow(FlowNodeId),
}
#[derive(Debug, Clone)]
pub enum Diff {
Insert {
post: Columns,
},
Update {
pre: Columns,
post: Columns,
},
Remove {
pre: Columns,
},
}
#[derive(Debug, Clone)]
pub struct Change {
pub origin: ChangeOrigin,
pub diffs: Vec<Diff>,
pub version: CommitVersion,
}
impl Change {
pub fn from_schema(schema: SchemaId, version: CommitVersion, diffs: Vec<Diff>) -> Self {
Self {
origin: ChangeOrigin::Schema(schema),
diffs,
version,
}
}
pub fn from_flow(from: FlowNodeId, version: CommitVersion, diffs: Vec<Diff>) -> Self {
Self {
origin: ChangeOrigin::Flow(from),
diffs,
version,
}
}
}