use sz_rust_core::config::AppConfig;
use sz_rust_core::container::App;
use sz_rust_core::log::LogFacade;
use sz_rust_examples::build_router;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt()
.with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
.init();
let config_dir = std::env::var("SZ_RUST_CONFIG_DIR")
.map(std::path::PathBuf::from)
.unwrap_or_else(|_| std::path::PathBuf::from("config"));
let config = AppConfig::load_from_dir(&config_dir)
.await
.unwrap_or_else(|e| {
tracing::warn!("加载配置失败(使用默认配置): {}", e);
AppConfig::default()
});
let app = App::init(config);
tracing::info!(
"App 容器初始化完成,数据库连接: {:?}",
app.db_connection_names()
);
let log_facade = LogFacade::init(&app.config().log);
log_facade.info("SZ-Rust Hello World 端点启动中...");
let router = build_router();
let addr = "127.0.0.1:9527";
let listener = tokio::net::TcpListener::bind(addr).await?;
tracing::info!("HTTP 服务监听 http://{}/", addr);
log_facade.info(&format!("HTTP 服务监听 http://{}/", addr));
axum::serve(listener, router).await?;
Ok(())
}