Trait bonsaidb_core::connection::StorageConnection  
source · pub trait StorageConnection: HasSession + Sized + Send + Sync {
    type Database: Connection;
    type Authenticated: StorageConnection;
Show 18 methods
    // Required methods
    fn admin(&self) -> Self::Database;
    fn database<DB: Schema>(&self, name: &str) -> Result<Self::Database, Error>;
    fn create_database_with_schema(
        &self,
        name: &str,
        schema: SchemaName,
        only_if_needed: bool
    ) -> Result<(), Error>;
    fn delete_database(&self, name: &str) -> Result<(), Error>;
    fn list_databases(&self) -> Result<Vec<Database>, Error>;
    fn list_available_schemas(&self) -> Result<Vec<SchemaSummary>, Error>;
    fn create_user(&self, username: &str) -> Result<u64, Error>;
    fn delete_user<'user, U: Nameable<'user, u64> + Send + Sync>(
        &self,
        user: U
    ) -> Result<(), Error>;
    fn set_user_password<'user, U: Nameable<'user, u64> + Send + Sync>(
        &self,
        user: U,
        password: SensitiveString
    ) -> Result<(), Error>;
    fn authenticate(
        &self,
        authentication: Authentication
    ) -> Result<Self::Authenticated, Error>;
    fn assume_identity(
        &self,
        identity: IdentityReference<'_>
    ) -> Result<Self::Authenticated, Error>;
    fn add_permission_group_to_user<'user, 'group, U: Nameable<'user, u64> + Send + Sync, G: Nameable<'group, u64> + Send + Sync>(
        &self,
        user: U,
        permission_group: G
    ) -> Result<(), Error>;
    fn remove_permission_group_from_user<'user, 'group, U: Nameable<'user, u64> + Send + Sync, G: Nameable<'group, u64> + Send + Sync>(
        &self,
        user: U,
        permission_group: G
    ) -> Result<(), Error>;
    fn add_role_to_user<'user, 'role, U: Nameable<'user, u64> + Send + Sync, R: Nameable<'role, u64> + Send + Sync>(
        &self,
        user: U,
        role: R
    ) -> Result<(), Error>;
    fn remove_role_from_user<'user, 'role, U: Nameable<'user, u64> + Send + Sync, R: Nameable<'role, u64> + Send + Sync>(
        &self,
        user: U,
        role: R
    ) -> Result<(), Error>;
    // Provided methods
    fn create_database<DB: Schema>(
        &self,
        name: &str,
        only_if_needed: bool
    ) -> Result<Self::Database, Error> { ... }
    fn authenticate_with_token(
        &self,
        id: u64,
        token: &SensitiveString
    ) -> Result<<Self::Authenticated as StorageConnection>::Authenticated, Error> { ... }
    fn authenticate_with_password<'name, User: Nameable<'name, u64>>(
        &self,
        user: User,
        password: SensitiveString
    ) -> Result<Self::Authenticated, Error> { ... }
}Expand description
Functions for interacting with a multi-database BonsaiDb instance.
Required Associated Types§
sourcetype Database: Connection
 
type Database: Connection
The type that represents a database for this implementation.
sourcetype Authenticated: StorageConnection
 
type Authenticated: StorageConnection
The StorageConnection type returned from authentication calls.
Required Methods§
sourcefn database<DB: Schema>(&self, name: &str) -> Result<Self::Database, Error>
 
fn database<DB: Schema>(&self, name: &str) -> Result<Self::Database, Error>
Returns a reference to database name with schema DB.
sourcefn create_database_with_schema(
    &self,
    name: &str,
    schema: SchemaName,
    only_if_needed: bool
) -> Result<(), Error>
 
fn create_database_with_schema( &self, name: &str, schema: SchemaName, only_if_needed: bool ) -> Result<(), Error>
Creates a database named name using the SchemaName schema.
Errors
Error::InvalidDatabaseName:namemust begin with an alphanumeric character ([a-zA-Z0-9]), and all remaining characters must be alphanumeric, a period (.), or a hyphen (-).Error::DatabaseNameAlreadyTaken:namewas already used for a previous database name. Returned ifonly_if_neededis false.
sourcefn delete_database(&self, name: &str) -> Result<(), Error>
 
fn delete_database(&self, name: &str) -> Result<(), Error>
Deletes a database named name.
Errors
Error::DatabaseNotFound: databasenamedoes not exist.Error::Other: an error occurred while deleting files.
sourcefn list_available_schemas(&self) -> Result<Vec<SchemaSummary>, Error>
 
fn list_available_schemas(&self) -> Result<Vec<SchemaSummary>, Error>
Lists the SchemaNames registered with this storage.
sourcefn delete_user<'user, U: Nameable<'user, u64> + Send + Sync>(
    &self,
    user: U
) -> Result<(), Error>
 
fn delete_user<'user, U: Nameable<'user, u64> + Send + Sync>( &self, user: U ) -> Result<(), Error>
Deletes a user.
sourcefn set_user_password<'user, U: Nameable<'user, u64> + Send + Sync>(
    &self,
    user: U,
    password: SensitiveString
) -> Result<(), Error>
 
fn set_user_password<'user, U: Nameable<'user, u64> + Send + Sync>( &self, user: U, password: SensitiveString ) -> Result<(), Error>
Sets a user’s password.
sourcefn authenticate(
    &self,
    authentication: Authentication
) -> Result<Self::Authenticated, Error>
 
fn authenticate( &self, authentication: Authentication ) -> Result<Self::Authenticated, Error>
Authenticates using the active session, returning a connection with a new session upon success. The existing connection will remain usable with the existing authentication, if any.
sourcefn assume_identity(
    &self,
    identity: IdentityReference<'_>
) -> Result<Self::Authenticated, Error>
 
fn assume_identity( &self, identity: IdentityReference<'_> ) -> Result<Self::Authenticated, Error>
Assumes the identity. If successful, the returned instance will have
the permissions from identity.
sourcefn add_permission_group_to_user<'user, 'group, U: Nameable<'user, u64> + Send + Sync, G: Nameable<'group, u64> + Send + Sync>(
    &self,
    user: U,
    permission_group: G
) -> Result<(), Error>
 
fn add_permission_group_to_user<'user, 'group, U: Nameable<'user, u64> + Send + Sync, G: Nameable<'group, u64> + Send + Sync>( &self, user: U, permission_group: G ) -> Result<(), Error>
Adds a user to a permission group.
sourcefn remove_permission_group_from_user<'user, 'group, U: Nameable<'user, u64> + Send + Sync, G: Nameable<'group, u64> + Send + Sync>(
    &self,
    user: U,
    permission_group: G
) -> Result<(), Error>
 
fn remove_permission_group_from_user<'user, 'group, U: Nameable<'user, u64> + Send + Sync, G: Nameable<'group, u64> + Send + Sync>( &self, user: U, permission_group: G ) -> Result<(), Error>
Removes a user from a permission group.
Provided Methods§
sourcefn create_database<DB: Schema>(
    &self,
    name: &str,
    only_if_needed: bool
) -> Result<Self::Database, Error>
 
fn create_database<DB: Schema>( &self, name: &str, only_if_needed: bool ) -> Result<Self::Database, Error>
Creates a database named name with the Schema provided.
Errors
Error::InvalidDatabaseName:namemust begin with an alphanumeric character ([a-zA-Z0-9]), and all remaining characters must be alphanumeric, a period (.), or a hyphen (-).Error::DatabaseNameAlreadyTaken:namewas already used for a previous database name. Returned ifonly_if_neededis false.
sourcefn authenticate_with_token(
    &self,
    id: u64,
    token: &SensitiveString
) -> Result<<Self::Authenticated as StorageConnection>::Authenticated, Error>
 
fn authenticate_with_token( &self, id: u64, token: &SensitiveString ) -> Result<<Self::Authenticated as StorageConnection>::Authenticated, Error>
Authenticates using an
AuthenticationToken. If
successful, the returned instance will have the permissions from
identity.
sourcefn authenticate_with_password<'name, User: Nameable<'name, u64>>(
    &self,
    user: User,
    password: SensitiveString
) -> Result<Self::Authenticated, Error>
 
fn authenticate_with_password<'name, User: Nameable<'name, u64>>( &self, user: User, password: SensitiveString ) -> Result<Self::Authenticated, Error>
Authenticates a User using a password. If
successful, the returned instance will have the permissions from
identity.