From dc60164a5271d8bc6027e23e592af3825f270f2e Mon Sep 17 00:00:00 2001 From: Tobias Bieniek Date: Fri, 4 Oct 2024 14:49:52 +0200 Subject: [PATCH] db: Add `oneoff_async_connection()` fns --- src/db.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/db.rs b/src/db.rs index e14181a7e8..a64b8fba94 100644 --- a/src/db.rs +++ b/src/db.rs @@ -2,7 +2,7 @@ use crate::certs::CRUNCHY; use diesel::{Connection, ConnectionResult, PgConnection, QueryResult}; use diesel_async::pooled_connection::deadpool::{Hook, HookError}; use diesel_async::pooled_connection::ManagerConfig; -use diesel_async::{AsyncPgConnection, RunQueryDsl}; +use diesel_async::{AsyncConnection, AsyncPgConnection, RunQueryDsl}; use native_tls::{Certificate, TlsConnector}; use postgres_native_tls::MakeTlsConnector; use secrecy::ExposeSecret; @@ -23,6 +23,18 @@ pub fn oneoff_connection() -> anyhow::Result { oneoff_connection_with_config(&config).map_err(Into::into) } +pub async fn oneoff_async_connection_with_config( + config: &config::DatabasePools, +) -> ConnectionResult { + let url = connection_url(config, config.primary.url.expose_secret()); + AsyncPgConnection::establish(&url).await +} + +pub async fn oneoff_async_connection() -> anyhow::Result { + let config = config::DatabasePools::full_from_environment(&config::Base::from_environment()?)?; + Ok(oneoff_async_connection_with_config(&config).await?) +} + pub fn connection_url(config: &config::DatabasePools, url: &str) -> String { let mut url = Url::parse(url).expect("Invalid database URL");