summaryrefslogtreecommitdiff
path: root/server/src/db.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/db.rs')
-rw-r--r--server/src/db.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/server/src/db.rs b/server/src/db.rs
index 3c1467e..43c3bd9 100644
--- a/server/src/db.rs
+++ b/server/src/db.rs
@@ -2,8 +2,12 @@ use crate::errors::AppError;
use sqlx::postgres::PgPool;
+/// Static variable used to manage the database connection. Called with value = None raises a panic
+/// error.
static mut CONNECTION: Option<PgPool> = None;
+/// Setup database connection. Get variable `DATABASE_URL` from the environment. Sqlx crate already
+/// defines an error for environments without DATABASE_URL.
pub async fn setup() -> Result<(), AppError> {
let database_url =
std::env::var("DATABASE_URL").expect("Define `DATABASE_URL` environment variable.");
@@ -15,6 +19,8 @@ pub async fn setup() -> Result<(), AppError> {
Ok(())
}
+/// Get connection. Raises an error if `setup()` has not been called yet.
+/// Managing static `CONNECTION` is an unsafe operation.
pub unsafe fn get_client() -> &'static PgPool {
match &CONNECTION {
Some(client) => client,