pub struct Database { /* private fields */ }Implementations§
Source§impl Database
impl Database
pub async fn new_postgres(url: &str) -> DatabaseResult<Self>
pub async fn from_config(db_type: &str, url: &str) -> DatabaseResult<Self>
pub async fn from_config_with_write( db_type: &str, read_url: &str, write_url: Option<&str>, ) -> DatabaseResult<Self>
Sourcepub fn from_pools(read: Arc<PgPool>, write: Option<Arc<PgPool>>) -> Self
pub fn from_pools(read: Arc<PgPool>, write: Option<Arc<PgPool>>) -> Self
Builds a handle from pools the caller already holds, reusing the open
connections rather than dialing the database again. The intended caller
is an extension HTTP router that is handed an Arc<PgPool> and needs to
construct core data services (which require a Database) without a URL.
Sourcepub fn read(&self) -> &dyn DatabaseProvider
pub fn read(&self) -> &dyn DatabaseProvider
Provider that serves reads. Equal to Self::write when no separate
write URL is configured (single-node deployments).
Sourcepub fn write(&self) -> &dyn DatabaseProvider
pub fn write(&self) -> &dyn DatabaseProvider
Provider that serves writes and transactions. Falls back to the read provider when no separate write URL is configured.
pub fn pool(&self) -> Option<Arc<PgPool>>
pub fn pool_arc(&self) -> DatabaseResult<Arc<PgPool>>
pub fn write_pool(&self) -> Option<Arc<PgPool>>
pub fn write_pool_arc(&self) -> DatabaseResult<Arc<PgPool>>
pub fn has_write_pool(&self) -> bool
pub async fn execute_batch(&self, sql: &str) -> DatabaseResult<()>
pub async fn get_info(&self) -> DatabaseResult<DatabaseInfo>
pub async fn test_connection(&self) -> DatabaseResult<()>
pub async fn begin(&self) -> DatabaseResult<Transaction<'_, Postgres>>
Trait Implementations§
Source§impl DatabaseHandle for Database
impl DatabaseHandle for Database
Source§impl DatabaseProvider for Database
impl DatabaseProvider for Database
fn get_postgres_pool(&self) -> Option<Arc<PgPool>>
fn execute<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
query: &'life1 dyn QuerySelector,
params: &'life2 [&'life3 dyn ToDbValue],
) -> Pin<Box<dyn Future<Output = DatabaseResult<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn execute_raw<'life0, 'life1, 'async_trait>(
&'life0 self,
sql: &'life1 str,
) -> Pin<Box<dyn Future<Output = DatabaseResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn fetch_all<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
query: &'life1 dyn QuerySelector,
params: &'life2 [&'life3 dyn ToDbValue],
) -> Pin<Box<dyn Future<Output = DatabaseResult<Vec<JsonRow>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn fetch_one<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
query: &'life1 dyn QuerySelector,
params: &'life2 [&'life3 dyn ToDbValue],
) -> Pin<Box<dyn Future<Output = DatabaseResult<JsonRow>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn fetch_optional<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
query: &'life1 dyn QuerySelector,
params: &'life2 [&'life3 dyn ToDbValue],
) -> Pin<Box<dyn Future<Output = DatabaseResult<Option<JsonRow>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn fetch_scalar_value<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
query: &'life1 dyn QuerySelector,
params: &'life2 [&'life3 dyn ToDbValue],
) -> Pin<Box<dyn Future<Output = DatabaseResult<DbValue>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn begin_transaction<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DatabaseResult<Box<dyn DatabaseTransaction>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_database_info<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DatabaseResult<DatabaseInfo>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn test_connection<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = DatabaseResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn execute_batch<'life0, 'life1, 'async_trait>(
&'life0 self,
sql: &'life1 str,
) -> Pin<Box<dyn Future<Output = DatabaseResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn query_raw<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 dyn QuerySelector,
) -> Pin<Box<dyn Future<Output = DatabaseResult<QueryResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn query_raw_with<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
query: &'life1 dyn QuerySelector,
params: &'life2 [&'life3 dyn ToDbValue],
) -> Pin<Box<dyn Future<Output = DatabaseResult<QueryResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn is_postgres(&self) -> bool
Auto Trait Implementations§
impl Freeze for Database
impl !RefUnwindSafe for Database
impl Send for Database
impl Sync for Database
impl Unpin for Database
impl UnsafeUnpin for Database
impl !UnwindSafe for Database
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more