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§

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_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.

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.

Implementors§