Skip to main content

CredentialStore

Trait CredentialStore 

Source
pub trait CredentialStore {
    // Required methods
    fn get_credentials(
        &self,
        instance: &str,
    ) -> Result<Option<Credentials>, KalamLinkError>;
    fn set_credentials(
        &mut self,
        credentials: &Credentials,
    ) -> Result<(), KalamLinkError>;
    fn delete_credentials(
        &mut self,
        instance: &str,
    ) -> Result<(), KalamLinkError>;
    fn list_instances(&self) -> Result<Vec<String>, KalamLinkError>;

    // Provided method
    fn has_credentials(&self, instance: &str) -> Result<bool, KalamLinkError> { ... }
}
Expand description

Trait for credential storage backends.

Implementations can store credentials in files, environment variables, secure keychains, browser localStorage, or any other storage mechanism.

§Security Note

Implementations MUST ensure credentials are stored securely:

  • Files should use restrictive permissions (0600 on Unix)
  • Passwords should never be logged
  • Consider encryption for sensitive deployments

§Example Implementation

use kalam_client::credentials::{CredentialStore, Credentials};

struct MyCredentialStore;

impl CredentialStore for MyCredentialStore {
    fn get_credentials(&self, instance: &str) -> Result<Option<Credentials>> {
        // Read from your storage backend
        Ok(None)
    }
     
    fn set_credentials(&mut self, credentials: &Credentials) -> Result<()> {
        // Write to your storage backend
        Ok(())
    }
     
    fn delete_credentials(&mut self, instance: &str) -> Result<()> {
        // Remove from your storage backend
        Ok(())
    }
     
    fn list_instances(&self) -> Result<Vec<String>> {
        // List all stored instances
        Ok(vec![])
    }
}

Required Methods§

Source

fn get_credentials( &self, instance: &str, ) -> Result<Option<Credentials>, KalamLinkError>

Retrieve credentials for a specific database instance

Returns Ok(None) if no credentials are stored for the instance.

§Arguments
  • instance - Instance identifier (e.g., “local”, “production”)
Source

fn set_credentials( &mut self, credentials: &Credentials, ) -> Result<(), KalamLinkError>

Store credentials for a database instance

Overwrites existing credentials for the same instance.

§Arguments
  • credentials - Credentials to store
Source

fn delete_credentials(&mut self, instance: &str) -> Result<(), KalamLinkError>

Delete stored credentials for an instance

Returns Ok(()) even if no credentials were stored.

§Arguments
  • instance - Instance identifier to delete
Source

fn list_instances(&self) -> Result<Vec<String>, KalamLinkError>

List all stored instance identifiers

Returns a vector of instance names that have stored credentials.

Provided Methods§

Source

fn has_credentials(&self, instance: &str) -> Result<bool, KalamLinkError>

Check if credentials exist for an instance

Default implementation calls get_credentials() and checks for Some.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§