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

Show 18 methods fn admin<'life0, 'async_trait>(
        &'life0 self
    ) -> Pin<Box<dyn Future<Output = Self::Database> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: '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,
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: '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
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: '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
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: 'async_trait
; fn list_databases<'life0, 'async_trait>(
        &'life0 self
    ) -> Pin<Box<dyn Future<Output = Result<Vec<Database>, Error>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: 'async_trait
; fn list_available_schemas<'life0, 'async_trait>(
        &'life0 self
    ) -> Pin<Box<dyn Future<Output = Result<Vec<SchemaName>, Error>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: '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
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: '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
        'user: 'async_trait,
        U: 'async_trait + Nameable<'user, u64> + Send + Sync,
        'life0: 'async_trait,
        Self: '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
        'user: 'async_trait,
        U: 'async_trait + Nameable<'user, u64> + Send + Sync,
        'life0: 'async_trait,
        Self: 'async_trait
; fn authenticate<'life0, 'async_trait>(
        &'life0 self,
        authentication: Authentication
    ) -> Pin<Box<dyn Future<Output = Result<Self::Authenticated, Error>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: '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
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: '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
        'user: 'async_trait,
        'group: 'async_trait,
        U: 'async_trait + Nameable<'user, u64> + Send + Sync,
        G: 'async_trait + Nameable<'group, u64> + Send + Sync,
        'life0: 'async_trait,
        Self: '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
        'user: 'async_trait,
        'group: 'async_trait,
        U: 'async_trait + Nameable<'user, u64> + Send + Sync,
        G: 'async_trait + Nameable<'group, u64> + Send + Sync,
        'life0: 'async_trait,
        Self: '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
        'user: 'async_trait,
        'role: 'async_trait,
        U: 'async_trait + Nameable<'user, u64> + Send + Sync,
        R: 'async_trait + Nameable<'role, u64> + Send + Sync,
        'life0: 'async_trait,
        Self: '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
        'user: 'async_trait,
        'role: 'async_trait,
        U: 'async_trait + Nameable<'user, u64> + Send + Sync,
        R: 'async_trait + Nameable<'role, u64> + Send + Sync,
        'life0: 'async_trait,
        Self: 'async_trait
; 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,
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: '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
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: '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
        'name: 'async_trait,
        User: 'async_trait + Nameable<'name, u64> + Send,
        'life0: 'async_trait,
        Self: 'async_trait
, { ... }
}
Expand description

Functions for interacting with a multi-database BonsaiDb instance.

Required Associated Types

The type that represents a database for this implementation.

The StorageConnection type returned from authentication calls.

Required Methods

Returns the currently authenticated session, if any.

Returns a reference to database name with schema DB.

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. Database names are case insensitive. Returned if only_if_needed is false.

Deletes a database named name.

Errors

Lists the databases in this storage.

Lists the SchemaNames registered with this storage.

Creates a user.

Deletes a user.

Sets a user’s password.

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

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

Adds a user to a permission group.

Removes a user from a permission group.

Adds a user to a permission group.

Removes a user from a permission group.

Provided Methods

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. Database names are case insensitive. Returned if only_if_needed is false.

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

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

Implementors