Hastic standalone
https://hastic.io
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.1 KiB
37 lines
1.1 KiB
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(()) |
|
}
|
|
|