Skip to main content

StorageConnection

Trait StorageConnection 

Source
pub trait StorageConnection:
    HasSession
    + Sized
    + Send
    + Sync {
    type Database: Connection;
    type Authenticated: StorageConnection;

Show 17 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_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§

Source

type Database: Connection

The type that represents a database for this implementation.

Source

type Authenticated: StorageConnection

The StorageConnection type returned from authentication calls.

Required Methods§

Source

fn admin(&self) -> Self::Database

Returns the administration database.

Source

fn database<DB: Schema>(&self, name: &str) -> Result<Self::Database, Error>

Returns a reference to database name with schema DB.

Source

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: name must begin with an alphanumeric character ([a-zA-Z0-9]), and all remaining characters must be alphanumeric, a period (.), or a hyphen (-).
  • Error::DatabaseNameAlreadyTaken: name was already used for a previous database name. Returned if only_if_needed is false.
Source

fn delete_database(&self, name: &str) -> Result<(), Error>

Deletes a database named name.

§Errors
Source

fn list_databases(&self) -> Result<Vec<Database>, Error>

Lists the databases in this storage.

Source

fn list_available_schemas(&self) -> Result<Vec<SchemaSummary>, Error>

Lists the SchemaNames registered with this storage.

Source

fn create_user(&self, username: &str) -> Result<u64, Error>

Creates a user.

Source

fn delete_user<'user, U: Nameable<'user, u64> + Send + Sync>( &self, user: U, ) -> Result<(), Error>

Deletes a user.

Source

fn set_user_password<'user, U: Nameable<'user, u64> + Send + Sync>( &self, user: U, password: SensitiveString, ) -> Result<(), Error>

Sets a user’s password.

Source

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.

Source

fn assume_identity( &self, identity: IdentityReference<'_>, ) -> Result<Self::Authenticated, Error>

Assumes the identity. If successful, the returned instance will have the permissions from identity.

Source

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.

Source

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.

Source

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>

Adds a user to a permission group.

Source

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>

Removes a user from a permission group.

Provided Methods§

Source

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: name must begin with an alphanumeric character ([a-zA-Z0-9]), and all remaining characters must be alphanumeric, a period (.), or a hyphen (-).
  • Error::DatabaseNameAlreadyTaken: name was already used for a previous database name. Returned if only_if_needed is false.
Source

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.

Dyn Compatibility§

This trait is not dyn compatible.

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

Implementors§