pub trait AsyncStorageConnection: HasSession + Sized + Send + Sync {
    type Database: AsyncConnection;
    type Authenticated: AsyncStorageConnection;

Show 18 methods // Required methods fn admin<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Self::Database> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn database<'life0, 'life1, 'async_trait, DB>( &'life0 self, name: &'life1 str ) -> Pin<Box<dyn Future<Output = Result<Self::Database, Error>> + Send + 'async_trait>> where DB: 'async_trait + Schema, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn create_database_with_schema<'life0, 'life1, 'async_trait>( &'life0 self, name: &'life1 str, schema: SchemaName, only_if_needed: bool ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn delete_database<'life0, 'life1, 'async_trait>( &'life0 self, name: &'life1 str ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn list_databases<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<Vec<Database>, Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn list_available_schemas<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<Vec<SchemaSummary>, Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn create_user<'life0, 'life1, 'async_trait>( &'life0 self, username: &'life1 str ) -> Pin<Box<dyn Future<Output = Result<u64, Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn delete_user<'user, 'life0, 'async_trait, U>( &'life0 self, user: U ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>> where U: 'async_trait + Nameable<'user, u64> + Send + Sync, Self: 'async_trait, 'user: 'async_trait, 'life0: 'async_trait; fn set_user_password<'user, 'life0, 'async_trait, U>( &'life0 self, user: U, password: SensitiveString ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>> where U: 'async_trait + Nameable<'user, u64> + Send + Sync, Self: 'async_trait, 'user: 'async_trait, 'life0: 'async_trait; fn authenticate<'life0, 'async_trait>( &'life0 self, authentication: Authentication ) -> Pin<Box<dyn Future<Output = Result<Self::Authenticated, Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn assume_identity<'life0, 'life1, 'async_trait>( &'life0 self, identity: IdentityReference<'life1> ) -> Pin<Box<dyn Future<Output = Result<Self::Authenticated, Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn add_permission_group_to_user<'user, 'group, 'life0, 'async_trait, U, G>( &'life0 self, user: U, permission_group: G ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>> where U: 'async_trait + Nameable<'user, u64> + Send + Sync, G: 'async_trait + Nameable<'group, u64> + Send + Sync, Self: 'async_trait, 'user: 'async_trait, 'group: 'async_trait, 'life0: 'async_trait; fn remove_permission_group_from_user<'user, 'group, 'life0, 'async_trait, U, G>( &'life0 self, user: U, permission_group: G ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>> where U: 'async_trait + Nameable<'user, u64> + Send + Sync, G: 'async_trait + Nameable<'group, u64> + Send + Sync, Self: 'async_trait, 'user: 'async_trait, 'group: 'async_trait, 'life0: 'async_trait; fn add_role_to_user<'user, 'role, 'life0, 'async_trait, U, R>( &'life0 self, user: U, role: R ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>> where U: 'async_trait + Nameable<'user, u64> + Send + Sync, R: 'async_trait + Nameable<'role, u64> + Send + Sync, Self: 'async_trait, 'user: 'async_trait, 'role: 'async_trait, 'life0: 'async_trait; fn remove_role_from_user<'user, 'role, 'life0, 'async_trait, U, R>( &'life0 self, user: U, role: R ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>> where U: 'async_trait + Nameable<'user, u64> + Send + Sync, R: 'async_trait + Nameable<'role, u64> + Send + Sync, Self: 'async_trait, 'user: 'async_trait, 'role: 'async_trait, 'life0: 'async_trait; // Provided methods fn create_database<'life0, 'life1, 'async_trait, DB>( &'life0 self, name: &'life1 str, only_if_needed: bool ) -> Pin<Box<dyn Future<Output = Result<Self::Database, Error>> + Send + 'async_trait>> where DB: 'async_trait + Schema, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn authenticate_with_token<'life0, 'life1, 'async_trait>( &'life0 self, id: u64, token: &'life1 SensitiveString ) -> Pin<Box<dyn Future<Output = Result<<Self::Authenticated as AsyncStorageConnection>::Authenticated, Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn authenticate_with_password<'name, 'life0, 'async_trait, User>( &'life0 self, user: User, password: SensitiveString ) -> Pin<Box<dyn Future<Output = Result<Self::Authenticated, Error>> + Send + 'async_trait>> where User: 'async_trait + Nameable<'name, u64> + Send, Self: 'async_trait, 'name: 'async_trait, 'life0: 'async_trait { ... }
}
Expand description

Functions for interacting with a multi-database BonsaiDb instance.

Required Associated Types§

source

type Database: AsyncConnection

The type that represents a database for this implementation.

source

type Authenticated: AsyncStorageConnection

The StorageConnection type returned from authentication calls.

Required Methods§

source

fn admin<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Self::Database> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Returns the currently authenticated session, if any.

source

fn database<'life0, 'life1, 'async_trait, DB>( &'life0 self, name: &'life1 str ) -> Pin<Box<dyn Future<Output = Result<Self::Database, Error>> + Send + 'async_trait>>
where DB: 'async_trait + Schema, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Returns a reference to database name with schema DB.

source

fn create_database_with_schema<'life0, 'life1, 'async_trait>( &'life0 self, name: &'life1 str, schema: SchemaName, only_if_needed: bool ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

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<'life0, 'life1, 'async_trait>( &'life0 self, name: &'life1 str ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Deletes a database named name.

Errors
source

fn list_databases<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<Vec<Database>, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Lists the databases in this storage.

source

fn list_available_schemas<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<Vec<SchemaSummary>, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Lists the SchemaNames registered with this storage.

source

fn create_user<'life0, 'life1, 'async_trait>( &'life0 self, username: &'life1 str ) -> Pin<Box<dyn Future<Output = Result<u64, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Creates a user.

source

fn delete_user<'user, 'life0, 'async_trait, U>( &'life0 self, user: U ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where U: 'async_trait + Nameable<'user, u64> + Send + Sync, Self: 'async_trait, 'user: 'async_trait, 'life0: 'async_trait,

Deletes a user.

source

fn set_user_password<'user, 'life0, 'async_trait, U>( &'life0 self, user: U, password: SensitiveString ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where U: 'async_trait + Nameable<'user, u64> + Send + Sync, Self: 'async_trait, 'user: 'async_trait, 'life0: 'async_trait,

Sets a user’s password.

source

fn authenticate<'life0, 'async_trait>( &'life0 self, authentication: Authentication ) -> Pin<Box<dyn Future<Output = Result<Self::Authenticated, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Authenticates using an AuthenticationToken. If successful, the returned instance will have the permissions from identity.

source

fn assume_identity<'life0, 'life1, 'async_trait>( &'life0 self, identity: IdentityReference<'life1> ) -> Pin<Box<dyn Future<Output = Result<Self::Authenticated, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Assumes the identity. If successful, the returned instance will have the merged permissions of the current authentication session and the permissions from identity.

source

fn add_permission_group_to_user<'user, 'group, 'life0, 'async_trait, U, G>( &'life0 self, user: U, permission_group: G ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where U: 'async_trait + Nameable<'user, u64> + Send + Sync, G: 'async_trait + Nameable<'group, u64> + Send + Sync, Self: 'async_trait, 'user: 'async_trait, 'group: 'async_trait, 'life0: 'async_trait,

Adds a user to a permission group.

source

fn remove_permission_group_from_user<'user, 'group, 'life0, 'async_trait, U, G>( &'life0 self, user: U, permission_group: G ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where U: 'async_trait + Nameable<'user, u64> + Send + Sync, G: 'async_trait + Nameable<'group, u64> + Send + Sync, Self: 'async_trait, 'user: 'async_trait, 'group: 'async_trait, 'life0: 'async_trait,

Removes a user from a permission group.

source

fn add_role_to_user<'user, 'role, 'life0, 'async_trait, U, R>( &'life0 self, user: U, role: R ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where U: 'async_trait + Nameable<'user, u64> + Send + Sync, R: 'async_trait + Nameable<'role, u64> + Send + Sync, Self: 'async_trait, 'user: 'async_trait, 'role: 'async_trait, 'life0: 'async_trait,

Adds a user to a permission group.

source

fn remove_role_from_user<'user, 'role, 'life0, 'async_trait, U, R>( &'life0 self, user: U, role: R ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where U: 'async_trait + Nameable<'user, u64> + Send + Sync, R: 'async_trait + Nameable<'role, u64> + Send + Sync, Self: 'async_trait, 'user: 'async_trait, 'role: 'async_trait, 'life0: 'async_trait,

Removes a user from a permission group.

Provided Methods§

source

fn create_database<'life0, 'life1, 'async_trait, DB>( &'life0 self, name: &'life1 str, only_if_needed: bool ) -> Pin<Box<dyn Future<Output = Result<Self::Database, Error>> + Send + 'async_trait>>
where DB: 'async_trait + Schema, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

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<'life0, 'life1, 'async_trait>( &'life0 self, id: u64, token: &'life1 SensitiveString ) -> Pin<Box<dyn Future<Output = Result<<Self::Authenticated as AsyncStorageConnection>::Authenticated, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Authenticates using an AuthenticationToken. If successful, the returned instance will have the permissions from identity.

source

fn authenticate_with_password<'name, 'life0, 'async_trait, User>( &'life0 self, user: User, password: SensitiveString ) -> Pin<Box<dyn Future<Output = Result<Self::Authenticated, Error>> + Send + 'async_trait>>
where User: 'async_trait + Nameable<'name, u64> + Send, Self: 'async_trait, 'name: 'async_trait, 'life0: 'async_trait,

Authenticates a User using a password. If successful, the returned instance will have the permissions from identity.

Object Safety§

This trait is not object safe.

Implementors§