use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct DiffEntry {
#[serde(rename = "sha")]
pub sha: String,
#[serde(rename = "filename")]
pub filename: String,
#[serde(rename = "status")]
pub status: Status,
#[serde(rename = "additions")]
pub additions: i32,
#[serde(rename = "deletions")]
pub deletions: i32,
#[serde(rename = "changes")]
pub changes: i32,
#[serde(rename = "blob_url")]
pub blob_url: String,
#[serde(rename = "raw_url")]
pub raw_url: String,
#[serde(rename = "contents_url")]
pub contents_url: String,
#[serde(rename = "patch", skip_serializing_if = "Option::is_none")]
pub patch: Option<String>,
#[serde(rename = "previous_filename", skip_serializing_if = "Option::is_none")]
pub previous_filename: Option<String>,
}
impl DiffEntry {
pub fn new(sha: String, filename: String, status: Status, additions: i32, deletions: i32, changes: i32, blob_url: String, raw_url: String, contents_url: String) -> DiffEntry {
DiffEntry {
sha,
filename,
status,
additions,
deletions,
changes,
blob_url,
raw_url,
contents_url,
patch: None,
previous_filename: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Status {
#[serde(rename = "added")]
Added,
#[serde(rename = "removed")]
Removed,
#[serde(rename = "modified")]
Modified,
#[serde(rename = "renamed")]
Renamed,
#[serde(rename = "copied")]
Copied,
#[serde(rename = "changed")]
Changed,
#[serde(rename = "unchanged")]
Unchanged,
}
impl Default for Status {
fn default() -> Status {
Self::Added
}
}