Browse Source

rm arc

pull/25/head
Alexey Velikiy 3 years ago
parent
commit
ffbd933141
  1. 17
      server/src/api.rs
  2. 11
      server/src/api/metric.rs
  3. 13
      server/src/services/analytic_service.rs

17
server/src/api.rs

@ -30,22 +30,25 @@ pub struct Message {
pub struct API<'a> {
config: &'a Config,
user_service: Arc<RwLock<user_service::UserService>>,
metric_service: Arc<RwLock<metric_service::MetricService>>,
metric_service: metric_service::MetricService,
data_service: segments_service::SegmentsService,
analytic_service: AnalyticService,
}
impl API<'_> {
pub fn new(config: &Config) -> anyhow::Result<API<'_>> {
let ss = segments_service::SegmentsService::new()?;
let ms = metric_service::MetricService::new(
&config.prom_url,
&config.query,
);
Ok(API {
config: config,
user_service: Arc::new(RwLock::new(user_service::UserService::new())),
metric_service: Arc::new(RwLock::new(metric_service::MetricService::new(
&config.prom_url,
&config.query,
))),
data_service: segments_service::SegmentsService::new()?,
analytic_service: AnalyticService::new(config),
metric_service: ms.clone(),
data_service: ss.clone(),
analytic_service: AnalyticService::new(ms, ss),
})
}

11
server/src/api/metric.rs

@ -15,9 +15,8 @@ use anyhow;
use crate::api::{self, API};
use parking_lot::RwLock;
use std::collections::HashMap;
use std::sync::Arc;
use super::BadQuery;
@ -28,7 +27,7 @@ struct QueryResponse {
async fn get_query(
p: HashMap<String, String>,
ms: Arc<RwLock<metric_service::MetricService>>,
ms: metric_service::MetricService,
) -> anyhow::Result<MetricResult> {
if !p.contains_key("from") {
return Err(anyhow::anyhow!("Missing attribute from"));
@ -43,14 +42,14 @@ async fn get_query(
let to = p.get("to").unwrap().parse::<u64>()?;
let step = p.get("step").unwrap().parse::<u64>()?;
let prom = ms.read().get_prom();
let prom = ms.get_prom();
drop(ms);
Ok(prom.query(from, to, step).await?)
}
async fn query(
p: HashMap<String, String>,
ms: Arc<RwLock<metric_service::MetricService>>,
ms: metric_service::MetricService,
) -> Result<impl warp::Reply, warp::Rejection> {
match get_query(p, ms).await {
Ok(res) => Ok(API::json(&res)),
@ -60,7 +59,7 @@ async fn query(
}
pub fn get_route(
metric_service: Arc<RwLock<metric_service::MetricService>>,
metric_service: metric_service::MetricService,
) -> impl Filter<Extract = impl Reply, Error = Rejection> + Clone {
return warp::path!("metric")
.and(get())

13
server/src/services/analytic_service.rs

@ -1,9 +1,6 @@
use crate::{config::Config, utils::get_random_str};
use crate::{utils::get_random_str};
use super::{
metric_service::MetricService,
segments_service::{Segment, SegmentType, ID_LENGTH},
};
use super::{metric_service::MetricService, segments_service::{self, ID_LENGTH, Segment, SegmentType, SegmentsService}};
use subbeat::metric::Metric;
@ -12,12 +9,14 @@ use anyhow;
#[derive(Clone)]
pub struct AnalyticService {
metric_service: MetricService,
segments_service: SegmentsService
}
impl AnalyticService {
pub fn new(config: &Config) -> AnalyticService {
pub fn new(metric_service: MetricService, segments_service: segments_service::SegmentsService) -> AnalyticService {
AnalyticService {
metric_service: MetricService::new(&config.prom_url, &config.query),
metric_service,
segments_service
}
}

Loading…
Cancel
Save