pub struct ConfigStorage {
pub configurations: BTreeMap<String, Configuration>,
pub claude_settings_dir: Option<String>,
pub default_storage_mode: Option<StorageMode>,
}Expand description
Storage manager for Claude API configurations
Handles persistence and retrieval of multiple API configurations
stored in ~/.cc_auto_switch/configurations.json
Fields§
§configurations: BTreeMap<String, Configuration>Map of alias names to configuration objects
claude_settings_dir: Option<String>Custom directory for Claude settings (optional)
default_storage_mode: Option<StorageMode>Default storage mode for writing configurations (None = use env mode)
Implementations§
Source§impl ConfigStorage
impl ConfigStorage
Sourcepub fn load() -> Result<Self>
pub fn load() -> Result<Self>
Load configurations from disk
Reads the JSON file from ~/.claude/cc_auto_switch_setting.json
Auto-migrates from old location ~/.cc-switch/configurations.json if it exists
Returns default empty storage if file doesn’t exist
§Errors
Returns error if file exists but cannot be read or parsed
Sourcepub fn save(&self) -> Result<()>
pub fn save(&self) -> Result<()>
Save configurations to disk
Writes the current state to ~/.claude/cc_auto_switch_setting.json
Creates the directory structure if it doesn’t exist
§Errors
Returns error if directory cannot be created or file cannot be written
Sourcepub fn migrate_from_old_path() -> Result<()>
pub fn migrate_from_old_path() -> Result<()>
Migrate configurations from old path to new path
Old path: ~/.cc_auto_switch/configurations.json
New path: ~/.claude/cc_auto_switch_setting.json
Safe to run multiple times. If old path does not exist, returns Ok(()) and prints a note.
Sourcepub fn add_configuration(&mut self, config: Configuration)
pub fn add_configuration(&mut self, config: Configuration)
Add a new configuration to storage
§Arguments
config- Configuration object to add
Overwrites existing configuration with same alias
Sourcepub fn remove_configuration(&mut self, alias_name: &str) -> bool
pub fn remove_configuration(&mut self, alias_name: &str) -> bool
Sourcepub fn get_configuration(&self, alias_name: &str) -> Option<&Configuration>
pub fn get_configuration(&self, alias_name: &str) -> Option<&Configuration>
Sourcepub fn set_claude_settings_dir(&mut self, directory: String)
pub fn set_claude_settings_dir(&mut self, directory: String)
Set the default directory for Claude settings
§Arguments
directory- Directory path for Claude settings
Sourcepub fn get_claude_settings_dir(&self) -> Option<&String>
pub fn get_claude_settings_dir(&self) -> Option<&String>
Get the current Claude settings directory
§Returns
Some(&String) if custom directory is set, None if using default
Sourcepub fn update_configuration(
&mut self,
old_alias: &str,
new_config: Configuration,
) -> Result<()>
pub fn update_configuration( &mut self, old_alias: &str, new_config: Configuration, ) -> Result<()>
Update an existing configuration
This method handles updating a configuration, including potential alias renaming. If the new configuration has a different alias name than the old one, it removes the old entry and creates a new one.
§Arguments
old_alias- Current alias name of the configuration to updatenew_config- Updated configuration object
§Returns
Ok(()) if update succeeds, Err if the old configuration doesn’t exist
§Errors
Returns error if the configuration with old_alias doesn’t exist