pub struct ConfigStorage {
pub configurations: BTreeMap<String, Configuration>,
pub claude_settings_dir: Option<String>,
pub default_storage_mode: Option<StorageMode>,
pub codex_configurations: Option<BTreeMap<String, CodexConfiguration>>,
}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)
codex_configurations: Option<BTreeMap<String, CodexConfiguration>>Codex (OpenAI) configurations, stored separately from Claude configurations
Implementations§
Source§impl ConfigStorage
impl ConfigStorage
Sourcepub fn add_codex_configuration(&mut self, config: CodexConfiguration)
pub fn add_codex_configuration(&mut self, config: CodexConfiguration)
Add a Codex configuration to storage
Overwrites existing configuration with the same alias.
Sourcepub fn get_codex_configuration(
&self,
alias_name: &str,
) -> Option<&CodexConfiguration>
pub fn get_codex_configuration( &self, alias_name: &str, ) -> Option<&CodexConfiguration>
Get a Codex configuration by alias name
Sourcepub fn remove_codex_configuration(&mut self, alias_name: &str) -> bool
pub fn remove_codex_configuration(&mut self, alias_name: &str) -> bool
Remove a Codex configuration by alias name
Returns true if a configuration was found and removed, false otherwise.
Sourcepub fn update_codex_configuration(
&mut self,
old_alias: &str,
new_config: CodexConfiguration,
) -> Result<()>
pub fn update_codex_configuration( &mut self, old_alias: &str, new_config: CodexConfiguration, ) -> Result<()>
Update a Codex configuration by old alias name
If the alias changed, removes the old entry and inserts the new one. Returns error if the old configuration doesn’t exist.
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