use std::sync::Arc; use dashmap::DashMap; use uuid::Uuid; use common_contracts::observability::TaskProgress; use crate::config::AppConfig; use crate::tushare::TushareDataProvider; #[derive(Clone)] pub struct AppState { pub tasks: Arc>, pub config: Arc, pub tushare_provider: Arc, } impl AppState { pub fn new(config: AppConfig) -> Self { let provider = Arc::new(TushareDataProvider::new( config.tushare_api_url.clone(), config.tushare_api_token.clone(), )); Self { tasks: Arc::new(DashMap::new()), config: Arc::new(config), tushare_provider: provider, } } }