/// Environment configuration for the application. /// /// Loads required configuration from environment variables at startup. /// All variables must be present or the application will panic. /// /// # 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. /// /// # Required Environment Variables /// - `DATABASE_URL`: PostgreSQL connection string (e.g., `postgresql://user:pass@localhost/dbname`) /// - `TOKEN_SECRET`: Secret key for JWT token signing (use a strong random string in production) /// - `ORIGIN`: Frontend URL for CORS (e.g., `http://localhost:8080`) #[derive(Debug, Clone)] pub struct Env { /// PostgreSQL database connection URL pub db_url: String, /// Secret key used to sign and verify JWT tokens pub token_secret: String, /// Frontend origin URL for CORS policy pub origin: String, } impl Env { /// Loads environment configuration from system environment variables. /// /// Panics if any required variable is missing. /// /// # Example /// ```ignore /// let env = Env::load(); /// // Environment must have DATABASE_URL, TOKEN_SECRET, and ORIGIN set /// ``` 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"); Env { db_url, token_secret, origin, } } }