#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct PlatformInfo {
pub fsync: &'static str,
pub dir_fsync: &'static str,
#[serde(skip_serializing_if = "Option::is_none")]
pub durability: Option<&'static str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rename_method: Option<&'static str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub backup_method: Option<&'static str>,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct LineRange {
pub start: usize,
pub end: usize,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct SearchBegin {
pub r#type: &'static str,
pub path: String,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct SearchMatch {
pub r#type: &'static str,
pub path: String,
pub line_number: u64,
pub lines: String,
pub byte_offset: u64,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub submatches: Vec<Submatch>,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct SearchContext {
pub r#type: &'static str,
pub path: String,
pub line_number: u64,
pub lines: String,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct FileStats {
pub matches: u64,
pub lines_searched: u64,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct SearchFile {
pub r#type: &'static str,
pub path: String,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct ProgressEvent {
pub r#type: &'static str,
pub done: u64,
pub total: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub rate_per_s: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eta_ms: Option<u64>,
pub phase: String,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct CancelledEvent {
pub r#type: &'static str,
#[serde(skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
pub reason: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub signal: Option<String>,
pub deadline_exceeded: bool,
}
impl CancelledEvent {
#[must_use]
pub fn from_shutdown(
shutdown: &crate::signal::ShutdownSignal,
path: Option<String>,
) -> Self {
Self {
r#type: "cancelled",
path,
reason: shutdown.cancel_reason().to_string(),
signal: shutdown.signal_name().map(str::to_string),
deadline_exceeded: shutdown.is_timeout(),
}
}
}
#[derive(Debug, Clone, PartialEq, Serialize, JsonSchema)]
pub struct PairResult {
pub index: u64,
pub matched: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub strategy: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub similarity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct ListEntry {
pub r#type: &'static str,
pub path: String,
pub kind: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub size: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub modified: Option<String>,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct CalcOutput {
pub r#type: &'static str,
pub expression: String,
pub result: String,
pub elapsed_ms: u64,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct TransformResult {
pub r#type: &'static str,
pub path: String,
pub language: String,
pub matches: u64,
pub replacements: u64,
pub bytes_before: u64,
pub bytes_after: u64,
pub checksum_before: String,
pub checksum_after: String,
pub elapsed_ms: u64,
pub write_strategy: &'static str,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("type" = "string"))]
pub backup_skipped: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub risk_assessment: Option<WriteRiskAssessment>,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct BackupResult {
pub r#type: &'static str,
pub path: String,
pub backup_path: String,
pub checksum: String,
pub bytes: u64,
pub elapsed_ms: u64,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct BatchOpResult<'a> {
pub r#type: &'static str,
pub index: u64,
pub op: &'a str,
pub status: &'static str,
#[serde(skip_serializing_if = "Option::is_none")]
pub details: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("type" = "string"))]
pub write_strategy: Option<&'static str>,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("type" = "string"))]
pub backup_skipped: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("type" = "string"))]
pub backup_path: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub warnings: Vec<String>,
pub elapsed_ms: u64,
}
#[derive(Debug, Serialize, JsonSchema)]
#[schemars(inline)]
pub struct DiffUnifiedOutput {
pub r#type: &'static str,
pub identical: bool,
pub format: &'static str,
pub content: String,
pub similarity_ratio: f32,
pub elapsed_ms: u64,
}
include!("part2c.inc.rs");