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>(&self, name: &str) -> Result<Self::Database, Error> where DB: Schema; 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, Global>, Error>; fn list_available_schemas( &self ) -> Result<Vec<SchemaSummary, Global>, Error>; fn create_user(&self, username: &str) -> Result<u64, Error>; fn delete_user<'user, U>(&self, user: U) -> Result<(), Error> where U: Nameable<'user, u64> + Send + Sync; fn set_user_password<'user, U>( &self, user: U, password: SensitiveString ) -> Result<(), Error> where U: Nameable<'user, u64> + Send + Sync; 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, G>( &self, user: U, permission_group: G ) -> Result<(), Error> where U: Nameable<'user, u64> + Send + Sync, G: Nameable<'group, u64> + Send + Sync; fn remove_permission_group_from_user<'user, 'group, U, G>( &self, user: U, permission_group: G ) -> Result<(), Error> where U: Nameable<'user, u64> + Send + Sync, G: Nameable<'group, u64> + Send + Sync; fn add_role_to_user<'user, 'role, U, R>( &self, user: U, role: R ) -> Result<(), Error> where U: Nameable<'user, u64> + Send + Sync, R: Nameable<'role, u64> + Send + Sync; fn remove_role_from_user<'user, 'role, U, R>( &self, user: U, role: R ) -> Result<(), Error> where U: Nameable<'user, u64> + Send + Sync, R: Nameable<'role, u64> + Send + Sync; // Provided methods fn create_database<DB>( &self, name: &str, only_if_needed: bool ) -> Result<Self::Database, Error> where DB: Schema { ... } fn authenticate_with_token( &self, id: u64, token: &SensitiveString ) -> Result<<Self::Authenticated as StorageConnection>::Authenticated, Error> { ... } fn authenticate_with_password<'name, User>( &self, user: User, password: SensitiveString ) -> Result<Self::Authenticated, Error> where User: Nameable<'name, u64> { ... }
}
Expand description

Functions for interacting with a multi-database BonsaiDb instance.

Required Associated Types§

type Database: Connection

The type that represents a database for this implementation.

type Authenticated: StorageConnection

The StorageConnection type returned from authentication calls.

Required Methods§

fn admin(&self) -> Self::Database

Returns the administration database.

fn database<DB>(&self, name: &str) -> Result<Self::Database, Error>where DB: Schema,

Returns a reference to database name with schema DB.

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.

fn delete_database(&self, name: &str) -> Result<(), Error>

Deletes a database named name.

Errors

fn list_databases(&self) -> Result<Vec<Database, Global>, Error>

Lists the databases in this storage.

fn list_available_schemas(&self) -> Result<Vec<SchemaSummary, Global>, Error>

Lists the SchemaNames registered with this storage.

fn create_user(&self, username: &str) -> Result<u64, Error>

Creates a user.

fn delete_user<'user, U>(&self, user: U) -> Result<(), Error>where U: Nameable<'user, u64> + Send + Sync,

Deletes a user.

fn set_user_password<'user, U>( &self, user: U, password: SensitiveString ) -> Result<(), Error>where U: Nameable<'user, u64> + Send + Sync,

Sets a user’s password.

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.

fn assume_identity( &self, identity: IdentityReference<'_> ) -> Result<Self::Authenticated, Error>

Assumes the identity. If successful, the returned instance will have the permissions from identity.

fn add_permission_group_to_user<'user, 'group, U, G>( &self, user: U, permission_group: G ) -> Result<(), Error>where U: Nameable<'user, u64> + Send + Sync, G: Nameable<'group, u64> + Send + Sync,

Adds a user to a permission group.

fn remove_permission_group_from_user<'user, 'group, U, G>( &self, user: U, permission_group: G ) -> Result<(), Error>where U: Nameable<'user, u64> + Send + Sync, G: Nameable<'group, u64> + Send + Sync,

Removes a user from a permission group.

fn add_role_to_user<'user, 'role, U, R>( &self, user: U, role: R ) -> Result<(), Error>where U: Nameable<'user, u64> + Send + Sync, R: Nameable<'role, u64> + Send + Sync,

Adds a user to a permission group.

fn remove_role_from_user<'user, 'role, U, R>( &self, user: U, role: R ) -> Result<(), Error>where U: Nameable<'user, u64> + Send + Sync, R: Nameable<'role, u64> + Send + Sync,

Removes a user from a permission group.

Provided Methods§

fn create_database<DB>( &self, name: &str, only_if_needed: bool ) -> Result<Self::Database, Error>where DB: Schema,

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.

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.

fn authenticate_with_password<'name, User>( &self, user: User, password: SensitiveString ) -> Result<Self::Authenticated, Error>where User: Nameable<'name, u64>,

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

Implementors§