features_cli/
models.rs

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    #[serde(skip_serializing_if = "Option::is_none")]
20    pub todos_count: Option<usize>,
21    pub commits: HashMap<String, serde_json::Value>,
22}
23
24#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
25pub struct Feature {
26    pub name: String,
27    pub description: String,
28    pub owner: String,
29    pub path: String,
30    pub features: Vec<Feature>,
31    pub meta: HashMap<String, serde_json::Value>,
32    pub changes: Vec<Change>,
33    pub decisions: Vec<String>,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub stats: Option<Stats>,
36}