summaryrefslogtreecommitdiff
path: root/src/outputs/status.rs
blob: f9ce875212bdd806eceee1dda47b9417b507a322 (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
use std::{
    collections::{HashMap, HashSet},
    path::PathBuf,
    time::SystemTime,
};

use just_enough_vcs::vcs::data::{
    local::workspace_analyzer::{
        CreatedRelativePathBuf, FromRelativePathBuf, LostRelativePathBuf, ModifiedRelativePathBuf,
        ToRelativePathBuf,
    },
    member::MemberId,
    sheet::SheetName,
    vault::virtual_file::VirtualFileId,
};
use serde::Serialize;

#[derive(Serialize)]
pub struct JVStatusResult {
    pub current_account: MemberId,
    pub current_sheet: SheetName,
    pub moved: HashMap<VirtualFileId, (FromRelativePathBuf, ToRelativePathBuf)>,
    pub created: HashSet<CreatedRelativePathBuf>,
    pub lost: HashSet<LostRelativePathBuf>,
    pub erased: HashSet<PathBuf>,
    pub modified: HashSet<ModifiedRelativePathBuf>,
    pub update_time: SystemTime,
    pub now_time: SystemTime,
}

impl Default for JVStatusResult {
    fn default() -> Self {
        Self {
            current_account: MemberId::default(),
            current_sheet: SheetName::default(),
            moved: HashMap::default(),
            created: HashSet::default(),
            lost: HashSet::default(),
            erased: HashSet::default(),
            modified: HashSet::default(),
            update_time: SystemTime::now(),
            now_time: SystemTime::now(),
        }
    }
}