summaryrefslogtreecommitdiff
path: root/src/cmds/out/status.rs
blob: 417c94cf6b9d5a248e96f3d5126118f955149ff4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
use std::{collections::HashMap, time::SystemTime};

use just_enough_vcs::lib::data::{
    local::workspace_analyzer::{AnalyzeResultPure, ModifiedRelativePathBuf},
    member::MemberId,
    sheet::SheetName,
};
use serde::Serialize;

#[derive(Serialize)]
pub struct JVStatusOutput {
    pub current_account: MemberId,
    pub current_sheet: SheetName,
    pub is_host_mode: bool,
    pub in_ref_sheet: bool,
    pub analyzed_result: AnalyzeResultPure,
    pub wrong_modified_items: HashMap<ModifiedRelativePathBuf, JVStatusWrongModifyReason>,
    pub update_time: SystemTime,
    pub now_time: SystemTime,
}

#[derive(Serialize)]
pub enum JVStatusWrongModifyReason {
    BaseVersionMismatch {
        base_version: String,
        latest_version: String,
    },
    ModifiedButNotHeld {
        holder: String,
    },
    NoHolder,
}

impl Default for JVStatusOutput {
    fn default() -> Self {
        Self {
            current_account: MemberId::default(),
            current_sheet: SheetName::default(),
            is_host_mode: false,
            in_ref_sheet: false,
            analyzed_result: AnalyzeResultPure::default(),
            wrong_modified_items: HashMap::new(),
            update_time: SystemTime::now(),
            now_time: SystemTime::now(),
        }
    }
}