From ce65d9eeafcd1f9d5c3adef1c9b1af6258ee711a Mon Sep 17 00:00:00 2001 From: rtkay123 Date: Sun, 1 Feb 2026 13:33:07 +0200 Subject: feat: conn to db --- src/server/state/database.rs | 17 +++++++++++++++++ src/server/state/mod.rs | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 src/server/state/database.rs create mode 100644 src/server/state/mod.rs (limited to 'src/server/state') diff --git a/src/server/state/database.rs b/src/server/state/database.rs new file mode 100644 index 0000000..32d3f98 --- /dev/null +++ b/src/server/state/database.rs @@ -0,0 +1,17 @@ +use anyhow::Result; +use sqlx::{PgPool, postgres::PgPoolOptions}; +use tracing::{debug, trace}; + +use crate::config::DatabaseOptions; + + +pub(super) async fn connect(opts: &DatabaseOptions) -> Result { + trace!(host = ?opts.url.host(), "connecting to database"); + let pg = PgPoolOptions::new() + .max_connections(opts.pool_size) + .connect(opts.url.as_str()) + .await?; + debug!(host = ?opts.url.host(), "connected to database"); + + Ok(pg) +} diff --git a/src/server/state/mod.rs b/src/server/state/mod.rs new file mode 100644 index 0000000..f4bf029 --- /dev/null +++ b/src/server/state/mod.rs @@ -0,0 +1,17 @@ +pub mod database; + +use sqlx::PgPool; + +use crate::{config::Config}; + +pub struct AppState { + database: PgPool, +} + +impl AppState { + pub async fn new(config: &Config) -> anyhow::Result { + let database = database::connect(&config.database).await?; + + Ok(Self{database}) + } +} -- cgit v1.2.3