From 0db9b76cad6862bb765632297c6616f80b497a5d Mon Sep 17 00:00:00 2001 From: schn33fuchs Date: Wed, 20 May 2026 12:49:33 +0200 Subject: [PATCH] A new env variable BACKEND_PORT for the port of the backend --- backend/src/env.rs | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/backend/src/env.rs b/backend/src/env.rs index f385bf8..f58180c 100644 --- a/backend/src/env.rs +++ b/backend/src/env.rs @@ -1,12 +1,13 @@ /// Environment configuration for the application. /// /// Loads required configuration from environment variables at startup. -/// All variables must be present or the application will panic. +/// All variables must be present or the application will panic during [`Env::load`]. +/// Used by [`AppState`](crate::AppState) for configuring JWT signing and CORS. /// /// # Fields -/// - `db_url`: PostgreSQL database connection URL. -/// - `token_secret`: Secret key used to sign and verify JWT tokens. -/// - `origin`: Frontend origin URL for CORS policy. +/// - `db_url`: PostgreSQL database connection URL +/// - `token_secret`: Secret key used to sign and verify [`Claims`](crate::models::Claims) in JWT tokens +/// - `origin`: Frontend origin URL for CORS policy configuration /// /// # Required Environment Variables /// - `DATABASE_URL`: PostgreSQL connection string (e.g., `postgresql://user:pass@localhost/dbname`) @@ -20,26 +21,38 @@ pub struct Env { pub token_secret: String, /// Frontend origin URL for CORS policy pub origin: String, + /// Backend port number + pub backend_port: String, } impl Env { /// Loads environment configuration from system environment variables. /// - /// Panics if any required variable is missing. + /// Reads `DATABASE_URL`, `TOKEN_SECRET`, and `ORIGIN` from the environment and returns + /// a configured [`Env`] instance. Used during server initialization in the `main` function. + /// + /// # Panics + /// If any required variable is missing (DATABASE_URL, TOKEN_SECRET, or ORIGIN). /// /// # Example /// ```ignore /// let env = Env::load(); /// // Environment must have DATABASE_URL, TOKEN_SECRET, and ORIGIN set + /// let app_state = AppState { + /// db: pool, + /// env, + /// }; /// ``` pub fn load() -> Env { let db_url = std::env::var("DATABASE_URL").expect("DATABASE_URL must be set"); let token_secret = std::env::var("TOKEN_SECRET").expect("TOKEN_SECRET must be set"); let origin = std::env::var("ORIGIN").expect("ORIGIN must be set"); + let backend_port = std::env::var("BACKEND_PORT").expect("BACKEND_PORT must be set"); Env { db_url, token_secret, origin, + backend_port, } } }