Skip to main content

DatabaseEngine

Struct DatabaseEngine 

Source
pub struct DatabaseEngine { /* private fields */ }
Expand description

The database secrets engine.

Stores connection configs and role definitions in the barrier-encrypted storage. Credential generation creates a random username/password pair and returns them with a lease.

Implementations§

Source§

impl DatabaseEngine

Source

pub fn new(barrier: Arc<Barrier>, prefix: String) -> Self

Create a new database engine with the given barrier and storage prefix.

§Errors

Returns DatabaseError if the barrier is sealed or storage fails.

Source

pub async fn configure( &self, config: DatabaseConfig, ) -> Result<(), DatabaseError>

Configure a database connection.

§Errors

Returns DatabaseError::InvalidConfig if required fields are missing. Returns DatabaseError::Barrier if the barrier is sealed.

Source

pub async fn get_config( &self, name: &str, ) -> Result<DatabaseConfig, DatabaseError>

Read a database connection config by name.

§Errors

Returns DatabaseError::NotFound if the config does not exist.

Source

pub async fn delete_config(&self, name: &str) -> Result<(), DatabaseError>

Delete a database connection config.

§Errors

Returns DatabaseError::Barrier if the barrier is sealed.

Source

pub async fn list_configs(&self) -> Result<Vec<String>, DatabaseError>

List all configured database connections.

§Errors

Returns DatabaseError::Barrier if the barrier is sealed.

Source

pub async fn create_role(&self, role: DatabaseRole) -> Result<(), DatabaseError>

Create a role definition.

§Errors

Returns DatabaseError::InvalidConfig if required fields are missing.

Source

pub async fn get_role(&self, name: &str) -> Result<DatabaseRole, DatabaseError>

Read a role by name.

§Errors

Returns DatabaseError::NotFound if the role does not exist.

Source

pub async fn delete_role(&self, name: &str) -> Result<(), DatabaseError>

Delete a role.

§Errors

Returns DatabaseError::Barrier if the barrier is sealed.

Source

pub async fn list_roles(&self) -> Result<Vec<String>, DatabaseError>

List all role names.

§Errors

Returns DatabaseError::Barrier if the barrier is sealed.

Source

pub async fn generate_credentials( &self, role_name: &str, ) -> Result<(DatabaseCredentials, DatabaseRole), DatabaseError>

Generate credentials for a role.

Creates a random username and password. In a production deployment, these would be executed against the actual database. For now, the credentials are generated and returned — the caller is responsible for creating a lease.

§Errors

Returns DatabaseError::RoleNotFound if the role does not exist. Returns DatabaseError::NotFound if the referenced config is missing.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more