diff --git a/src-tauri/src/config/mod.rs b/src-tauri/src/config/mod.rs new file mode 100644 index 0000000000000000000000000000000000000000..27a78e38f3ab70785a547a0fff5fe99b4a11f20a --- /dev/null +++ b/src-tauri/src/config/mod.rs @@ -0,0 +1 @@ +pub mod verge; diff --git a/src-tauri/src/config/verge.rs b/src-tauri/src/config/verge.rs new file mode 100644 index 0000000000000000000000000000000000000000..726bacb3b6752f53708357b08ed910ee467e112d --- /dev/null +++ b/src-tauri/src/config/verge.rs @@ -0,0 +1,41 @@ +use serde::{Deserialize, Serialize}; + +/// Define the verge.yaml's schema +#[derive(Default, Debug, Clone, Deserialize, Serialize)] +pub struct VergeConfig { + /// current profile's name + pub current: Option<u32>, + + /// profile list + pub profiles: Option<Vec<ProfileData>>, +} + +#[derive(Default, Debug, Clone, Deserialize, Serialize)] +pub struct ProfileData { + /// profile name + pub name: Option<String>, + /// profile file + pub file: Option<String>, + /// current mode + pub mode: Option<String>, + /// source url + pub url: Option<String>, + /// selected infomation + pub selected: Option<Vec<ProfileSelected>>, + /// user info + pub user_info: Option<ProfileUserInfo>, +} + +#[derive(Default, Debug, Clone, Deserialize, Serialize)] +pub struct ProfileSelected { + pub name: Option<String>, + pub now: Option<String>, +} + +#[derive(Default, Debug, Clone, Copy, Deserialize, Serialize)] +pub struct ProfileUserInfo { + pub upload: u64, + pub download: u64, + pub total: u64, + pub expire: u64, +}