use super::*;
#[derive(Serialize, Deserialize, Debug)]
#[cfg_attr(feature = "ts-rs", derive(TS), ts(export, export_to = "app/messages/"))]
pub struct RevChange {
pub kind: ChangeKind,
pub path: TreePath,
pub has_conflict: bool,
pub hunks: Vec<ChangeHunk>,
}
#[derive(Serialize, Deserialize, Debug)]
#[cfg_attr(feature = "ts-rs", derive(TS), ts(export, export_to = "app/messages/"))]
pub struct RevConflict {
pub path: TreePath,
pub hunk: ChangeHunk,
}
#[derive(Serialize, Deserialize, Debug)]
#[cfg_attr(feature = "ts-rs", derive(TS), ts(export, export_to = "app/messages/"))]
pub enum ChangeKind {
None,
Added,
Deleted,
Modified,
}
#[derive(Serialize, Debug)]
#[serde(tag = "type")]
#[cfg_attr(feature = "ts-rs", derive(TS), ts(export, export_to = "app/messages/"))]
#[allow(clippy::large_enum_variant)]
pub enum RevsResult {
NotFound {
set: RevSet,
},
Detail {
set: RevSet,
headers: Vec<RevHeader>,
parents: Vec<RevHeader>,
changes: Vec<RevChange>,
conflicts: Vec<RevConflict>,
},
}
#[derive(Serialize, Clone, Copy, Debug)]
#[cfg_attr(feature = "ts-rs", derive(TS), ts(export, export_to = "app/messages/"))]
pub struct LogCoordinates(pub usize, pub usize);
#[derive(Serialize, Debug)]
#[serde(tag = "type")]
#[cfg_attr(feature = "ts-rs", derive(TS), ts(export, export_to = "app/messages/"))]
pub enum LogLine {
FromNode {
source: LogCoordinates,
target: LogCoordinates,
indirect: bool,
},
ToNode {
source: LogCoordinates,
target: LogCoordinates,
indirect: bool,
},
ToIntersection {
source: LogCoordinates,
target: LogCoordinates,
indirect: bool,
},
ToMissing {
source: LogCoordinates,
target: LogCoordinates,
indirect: bool,
},
}
#[derive(Serialize, Debug)]
#[cfg_attr(feature = "ts-rs", derive(TS), ts(export, export_to = "app/messages/"))]
pub struct LogRow {
pub revision: RevHeader,
pub location: LogCoordinates,
pub padding: usize,
pub lines: Vec<LogLine>,
}
#[derive(Serialize)]
#[cfg_attr(feature = "ts-rs", derive(TS), ts(export, export_to = "app/messages/"))]
pub struct LogPage {
pub rows: Vec<LogRow>,
pub has_more: bool,
}