pub trait StorageConnection:
HasSession
+ Sized
+ Send
+ Sync {
type Database: Connection;
type Authenticated: StorageConnection;
Show 17 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_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§
Sourcetype Database: Connection
type Database: Connection
The type that represents a database for this implementation.
Sourcetype Authenticated: StorageConnection
type Authenticated: StorageConnection
The StorageConnection type returned from authentication calls.
Required Methods§
Sourcefn database<DB: Schema>(&self, name: &str) -> Result<Self::Database, Error>
fn database<DB: Schema>(&self, name: &str) -> Result<Self::Database, Error>
Returns a reference to database name with schema DB.
Sourcefn create_database_with_schema(
&self,
name: &str,
schema: SchemaName,
only_if_needed: bool,
) -> Result<(), Error>
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:namemust begin with an alphanumeric character ([a-zA-Z0-9]), and all remaining characters must be alphanumeric, a period (.), or a hyphen (-).Error::DatabaseNameAlreadyTaken:namewas already used for a previous database name. Returned ifonly_if_neededis false.
Sourcefn delete_database(&self, name: &str) -> Result<(), Error>
fn delete_database(&self, name: &str) -> Result<(), Error>
Deletes a database named name.
§Errors
Error::DatabaseNotFound: databasenamedoes not exist.Error::Other: an error occurred while deleting files.
Sourcefn list_available_schemas(&self) -> Result<Vec<SchemaSummary>, Error>
fn list_available_schemas(&self) -> Result<Vec<SchemaSummary>, Error>
Lists the SchemaNames registered with this storage.
Sourcefn delete_user<'user, U: Nameable<'user, u64> + Send + Sync>(
&self,
user: U,
) -> Result<(), Error>
fn delete_user<'user, U: Nameable<'user, u64> + Send + Sync>( &self, user: U, ) -> Result<(), Error>
Deletes a user.
Sourcefn set_user_password<'user, U: Nameable<'user, u64> + Send + Sync>(
&self,
user: U,
password: SensitiveString,
) -> Result<(), Error>
fn set_user_password<'user, U: Nameable<'user, u64> + Send + Sync>( &self, user: U, password: SensitiveString, ) -> Result<(), Error>
Sets a user’s password.
Sourcefn authenticate(
&self,
authentication: Authentication,
) -> Result<Self::Authenticated, Error>
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.
Sourcefn assume_identity(
&self,
identity: IdentityReference<'_>,
) -> Result<Self::Authenticated, Error>
fn assume_identity( &self, identity: IdentityReference<'_>, ) -> Result<Self::Authenticated, Error>
Assumes the identity. If successful, the returned instance will have
the permissions from identity.
Sourcefn 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 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.
Sourcefn 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 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.
Provided Methods§
Sourcefn create_database<DB: Schema>(
&self,
name: &str,
only_if_needed: bool,
) -> Result<Self::Database, Error>
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:namemust begin with an alphanumeric character ([a-zA-Z0-9]), and all remaining characters must be alphanumeric, a period (.), or a hyphen (-).Error::DatabaseNameAlreadyTaken:namewas already used for a previous database name. Returned ifonly_if_neededis false.
Sourcefn authenticate_with_password<'name, User: Nameable<'name, u64>>(
&self,
user: User,
password: SensitiveString,
) -> Result<Self::Authenticated, Error>
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.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".