AsyncStorageConnection

Trait AsyncStorageConnection 

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

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

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§