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", so this trait is not object safe.

Implementors§