good_ormning/sqlite/graph/
utils.rs1use enum_dispatch::enum_dispatch;
2use crate::utils::Errs;
3use super::Node;
4
5pub(crate) struct SqliteMigrateCtx {
6 pub(crate) errs: Errs,
7 pub statements: Vec<String>,
8}
9
10impl SqliteMigrateCtx {
11 pub fn new(errs: Errs) -> Self {
12 Self {
13 errs: errs,
14 statements: Default::default(),
15 }
16 }
17}
18
19pub(crate) type MigrateNode = crate::graphmigrate::Node<Node>;
20
21#[enum_dispatch]
22pub(crate) trait SqliteNodeDataDispatch {
23 fn create_coalesce(&mut self, other: Node) -> Option<Node>;
24 fn create(&self, ctx: &mut SqliteMigrateCtx);
25 fn delete_coalesce(&mut self, other: Node) -> Option<Node>;
26 fn delete(&self, ctx: &mut SqliteMigrateCtx);
27}
28
29pub(crate) trait SqliteNodeData: SqliteNodeDataDispatch {
30 fn update(&self, ctx: &mut SqliteMigrateCtx, old: &Self);
31}