diff options
| author | 魏曹先生 <1992414357@qq.com> | 2025-09-25 17:22:05 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-25 17:22:05 +0800 |
| commit | 3497a285c430d0390bfa074c6f9dab5c732b59a1 (patch) | |
| tree | 243626035d251cf5d19deee9845ebe6af2a6582a /crates/vcs/src/data/vault/config.rs | |
| parent | 647cc441eece20218d7387f37d94042e88042057 (diff) | |
| parent | 06b2e2b384da34e30688d1a217859c5cf68ca3bd (diff) | |
Merge pull request #6 from JustEnoughVCS/jvcs_dev
Jvcs dev
Diffstat (limited to 'crates/vcs/src/data/vault/config.rs')
| -rw-r--r-- | crates/vcs/src/data/vault/config.rs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/crates/vcs/src/data/vault/config.rs b/crates/vcs/src/data/vault/config.rs new file mode 100644 index 0000000..11917de --- /dev/null +++ b/crates/vcs/src/data/vault/config.rs @@ -0,0 +1,46 @@ +use cfg_file::ConfigFile; +use serde::{Deserialize, Serialize}; + +use crate::constants::SERVER_FILE_VAULT; +use crate::data::member::Member; +use crate::data::vault::MemberId; + +#[derive(Serialize, Deserialize, ConfigFile)] +#[cfg_file(path = SERVER_FILE_VAULT)] +pub struct VaultConfig { + /// Vault name, which can be used as the project name and generally serves as a hint + vault_name: String, + + /// Vault admin id, a list of member id representing administrator identities + vault_admin_list: Vec<MemberId>, +} + +impl Default for VaultConfig { + fn default() -> Self { + Self { + vault_name: "JustEnoughVault".to_string(), + vault_admin_list: Vec::new(), + } + } +} + +impl VaultConfig { + // Change name of the vault. + pub fn change_name(&mut self, name: impl Into<String>) { + self.vault_name = name.into() + } + + // Add admin + pub fn add_admin(&mut self, member: &Member) { + let uuid = member.id(); + if !self.vault_admin_list.contains(&uuid) { + self.vault_admin_list.push(uuid); + } + } + + // Remove admin + pub fn remove_admin(&mut self, member: &Member) { + let id = member.id(); + self.vault_admin_list.retain(|x| x != &id); + } +} |
