use crate::types::review::render_markdown_for_terminal;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
pub struct MarkdownChangelog {
pub content: String,
}
impl MarkdownChangelog {
#[must_use]
pub fn format(&self) -> String {
render_markdown_for_terminal(&self.content)
}
#[must_use]
pub fn raw_content(&self) -> &str {
&self.content
}
}
#[derive(Clone, Serialize, Deserialize, JsonSchema, Debug, PartialEq, Eq, Hash)]
pub enum ChangelogType {
Added,
Changed,
Deprecated,
Removed,
Fixed,
Security,
}
#[derive(Clone, Serialize, Deserialize, JsonSchema, Debug, Default)]
pub struct ChangeMetrics {
pub total_commits: usize,
pub files_changed: usize,
pub insertions: usize,
pub deletions: usize,
pub total_lines_changed: usize,
}
#[derive(Clone, Serialize, Deserialize, JsonSchema, Debug)]
pub struct ChangeEntry {
pub description: String,
pub commit_hashes: Vec<String>,
pub associated_issues: Vec<String>,
pub pull_request: Option<String>,
}