diff --git a/.env b/.env index 4094e8d..4c365d4 100644 --- a/.env +++ b/.env @@ -1,4 +1,5 @@ # .env -DATABASE_URL=postgres://milkydata:44n6FdB8CdDAk5rk@127.0.0.1:5432/milkydata +DATABASE_URL=postgres://milkydata:44n6FdB8CdDAk5rk@154.37.213.24:5432/milkydata WECHAT_APPID="wx5b00eb90621802f7" -WECHAT_SECRET="494efc513faa310bfba588bda2849bfd" \ No newline at end of file +WECHAT_SECRET="494efc513faa310bfba588bda2849bfd" +JWT_SECRET="your_super_secret_key" \ No newline at end of file diff --git a/src/db.rs b/src/db.rs index 275144a..533ff7f 100644 --- a/src/db.rs +++ b/src/db.rs @@ -1,5 +1,6 @@ -use sqlx::PgPool; +use sqlx::{PgPool, postgres::PgPoolOptions}; use std::env; +use std::error::Error; // 从 models 模块引入 WeatherData 结构体 use crate::models::WeatherData; @@ -97,9 +98,23 @@ pub async fn insert_weather_data(pool: &PgPool, weather_data: &WeatherData) -> R Ok(inserted_id) } -pub async fn create_pool() -> Result { - dotenvy::dotenv().ok(); - let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set in .env file"); +pub async fn create_pool() -> Result> { + // 加载环境变量,非致命错误处理 + if let Err(e) = dotenvy::dotenv() { + eprintln!("警告: 无法加载.env文件 - {}", e); + } - PgPool::connect(&database_url).await + // 获取数据库URL并提供友好错误信息 + let database_url = + env::var("DATABASE_URL").map_err(|_| "环境变量DATABASE_URL未设置,请在.env文件中配置")?; + + // 配置连接池参数 + let pool = PgPoolOptions::new() + .max_connections(20) // 根据应用需求调整最大连接数 + .acquire_timeout(std::time::Duration::from_secs(30)) // 获取连接的超时时间 + .connect(&database_url) + .await + .map_err(|e| format!("数据库连接失败: {}", e))?; + + Ok(pool) }