mod api; use hastic::services::{analytic_service, analytic_unit_service, metric_service, segments_service, data_service}; use anyhow; #[tokio::main] async fn main() -> anyhow::Result<()> { let config = hastic::config::Config::new()?; let cfg_clone = config.clone(); let data_service = data_service::DataService::new()?; let analytic_unit_service = analytic_unit_service::AnalyticUnitService::new(&data_service)?; let metric_service = metric_service::MetricService::new(&config.datasource_config); let segments_service = segments_service::SegmentsService::new(&data_service)?; let mut analytic_service = analytic_service::AnalyticService::new( analytic_unit_service.clone(), metric_service.clone(), segments_service.clone(), config.alerting, ); let api = api::API::new( &cfg_clone, metric_service.clone(), segments_service.clone(), analytic_service.get_client(), ); let s1 = analytic_service.serve(); let s2 = api.serve(); futures::future::join(s1, s2).await; Ok(()) }