summaryrefslogtreecommitdiffstats
path: root/src/state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/state.rs')
-rw-r--r--src/state.rs19
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 })
+ }
+}