Initial upload: GitPulse - Developer Productivity Analyzer CLI tool
This commit is contained in:
65
src/models/file.rs
Normal file
65
src/models/file.rs
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
pub struct FileStats {
|
||||||
|
pub path: String,
|
||||||
|
pub lines_added: usize,
|
||||||
|
pub lines_removed: usize,
|
||||||
|
pub net_change: i64,
|
||||||
|
pub commits: usize,
|
||||||
|
pub last_modified: String,
|
||||||
|
pub authors: Vec<String>,
|
||||||
|
pub file_type: String,
|
||||||
|
pub is_renamed: bool,
|
||||||
|
pub rename_count: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for FileStats {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
path: String::new(),
|
||||||
|
lines_added: 0,
|
||||||
|
lines_removed: 0,
|
||||||
|
net_change: 0,
|
||||||
|
commits: 0,
|
||||||
|
last_modified: String::new(),
|
||||||
|
authors: Vec::new(),
|
||||||
|
file_type: String::new(),
|
||||||
|
is_renamed: false,
|
||||||
|
rename_count: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
pub struct FileChange {
|
||||||
|
pub path: String,
|
||||||
|
pub change_type: ChangeType,
|
||||||
|
pub lines_added: usize,
|
||||||
|
pub lines_removed: usize,
|
||||||
|
pub old_path: Option<String>,
|
||||||
|
pub similarity: Option<f64>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
pub enum ChangeType {
|
||||||
|
Added,
|
||||||
|
Deleted,
|
||||||
|
Modified,
|
||||||
|
Renamed,
|
||||||
|
Copied,
|
||||||
|
Untracked,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<git2::ChangeType> for ChangeType {
|
||||||
|
fn from(change_type: git2::ChangeType) -> Self {
|
||||||
|
match change_type {
|
||||||
|
git2::ChangeType::Addition => ChangeType::Added,
|
||||||
|
git2::ChangeType::Deletion => ChangeType::Deleted,
|
||||||
|
git2::ChangeType::Modification => ChangeType::Modified,
|
||||||
|
git2::ChangeType::Renamed => ChangeType::Renamed,
|
||||||
|
git2::ChangeType::Copied => ChangeType::Copied,
|
||||||
|
_ => ChangeType::Untracked,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user