use dochy_core::structs::{RustParam, Qv};
pub struct RootDiffR{
params : Vec<(usize, RustParam)>,
lists : Vec<(usize, Option<ListDiffR>)>,
}
impl RootDiffR{
pub(crate) fn new(params : Vec<(usize, RustParam)>, lists : Vec<(usize, Option<ListDiffR>)>) -> RootDiffR{
RootDiffR { params, lists }
}
pub(crate) fn default() -> RootDiffR{ RootDiffR{ params : Vec::new(), lists : Vec::new() }}
pub(crate) fn deconstruct(self) -> (Vec<(usize, RustParam)>, Vec<(usize, Option<ListDiffR>)>){ (self.params, self.lists) }
}
pub(crate) struct ListDiffR{
items : Vec<(u64, ListItemDiffEnumR)>,
next_id : u64,
}
impl ListDiffR{
pub(crate) fn new(items : Vec<(u64, ListItemDiffEnumR)>, next_id : u64) -> ListDiffR{
ListDiffR{ items, next_id }
}
pub(crate) fn deconstruct(self) -> (u64, Vec<(u64, ListItemDiffEnumR)>){ (self.next_id, self.items) }
}
pub(crate) enum ListItemDiffEnumR{
Delete,
Create(CS),
Modify(ListItemDiffR),
}
pub(crate) struct CS{
pub prev_id : Option<u64>,
pub diff : ListItemDiffR,
}
pub(crate) struct ListItemDiffR{
params : Vec<(usize, RustParam)>,
lists : Vec<(usize, Option<ListDiffR>)>,
refs : Vec<(usize, Qv<String>)>,
}
impl ListItemDiffR{
pub(crate) fn new(
params : Vec<(usize, RustParam)>,
lists : Vec<(usize, Option<ListDiffR>)>,
refs : Vec<(usize, Qv<String>)>) -> ListItemDiffR{
ListItemDiffR{ params, lists, refs, }
}
pub(crate) fn deconstruct(self)
-> (Vec<(usize, RustParam)>, Vec<(usize, Option<ListDiffR>)>,Vec<(usize, Qv<String>)>){
(self.params, self.lists, self.refs)
}
}