reifydb_core/interface/
change.rs1use crate::{
5 common::CommitVersion,
6 interface::catalog::{flow::FlowNodeId, primitive::PrimitiveId},
7 value::column::columns::Columns,
8};
9
10#[derive(Debug, Clone)]
12pub enum ChangeOrigin {
13 Primitive(PrimitiveId),
14 Flow(FlowNodeId),
15}
16#[derive(Debug, Clone)]
18pub enum Diff {
19 Insert {
20 post: Columns,
21 },
22 Update {
23 pre: Columns,
24 post: Columns,
25 },
26 Remove {
27 pre: Columns,
28 },
29}
30
31#[derive(Debug, Clone)]
33pub struct Change {
34 pub origin: ChangeOrigin,
36 pub diffs: Vec<Diff>,
38 pub version: CommitVersion,
40}
41
42impl Change {
43 pub fn from_primitive(source: PrimitiveId, version: CommitVersion, diffs: Vec<Diff>) -> Self {
45 Self {
46 origin: ChangeOrigin::Primitive(source),
47 diffs,
48 version,
49 }
50 }
51
52 pub fn from_flow(from: FlowNodeId, version: CommitVersion, diffs: Vec<Diff>) -> Self {
54 Self {
55 origin: ChangeOrigin::Flow(from),
56 diffs,
57 version,
58 }
59 }
60}