good_ormning/sqlite/graph/
utils.rs

1use 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}