1use std::collections::HashMap;
2
3#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
4pub struct Change {
5 pub title: String,
6 pub author_name: String,
7 pub author_email: String,
8 pub description: String,
9 pub date: String,
10 pub hash: String,
11}
12
13#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
14pub struct Stats {
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub files_count: Option<usize>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub lines_count: Option<usize>,
19 pub commits: HashMap<String, serde_json::Value>,
20}
21
22#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
23pub struct Feature {
24 pub name: String,
25 pub description: String,
26 pub owner: String,
27 pub path: String,
28 pub features: Vec<Feature>,
29 pub meta: HashMap<String, serde_json::Value>,
30 pub changes: Vec<Change>,
31 pub decisions: Vec<String>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub stats: Option<Stats>,
34}