diff options
Diffstat (limited to 'src/state.rs')
-rw-r--r-- | src/state.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/state.rs b/src/state.rs index 78a6654..efe2192 100644 --- a/src/state.rs +++ b/src/state.rs @@ -1 +1,18 @@ -pub struct AppState; +use sqlx::{postgres::PgPoolOptions, Pool, Postgres}; + +use crate::Error; + +pub struct AppState { + pub db_pool: Pool<Postgres>, +} + +impl AppState { + pub async fn new<S: AsRef<str>>(db_url: S) -> Result<Self, Error> { + let db_pool = PgPoolOptions::new() + .max_connections(10) + .connect(db_url.as_ref()) + .await?; + + Ok(Self { db_pool }) + } +} |