Skip to content

Commit cc46126

Browse files
committed
refactor: deepsource
1 parent dbe766d commit cc46126

File tree

2 files changed

+30
-25
lines changed

2 files changed

+30
-25
lines changed

src/cli.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,9 @@ impl FromArgMatches for Cli {
529529
self.kafka_host = m.get_one::<String>(Self::KAFKA_HOST).cloned();
530530
self.kafka_group = m.get_one::<String>(Self::KAFKA_GROUP).cloned();
531531
self.kafka_client_id = m.get_one::<String>(Self::KAFKA_CLIENT_ID).cloned();
532-
self.kafka_security_protocol = m.get_one::<SslProtocol>(Self::KAFKA_SECURITY_PROTOCOL).cloned();
532+
self.kafka_security_protocol = m
533+
.get_one::<SslProtocol>(Self::KAFKA_SECURITY_PROTOCOL)
534+
.cloned();
533535
self.kafka_partitions = m.get_one::<String>(Self::KAFKA_PARTITIONS).cloned();
534536

535537
self.tls_cert_path = m.get_one::<PathBuf>(Self::TLS_CERT).cloned();

src/handlers/http/alerts/alerts_utils.rs

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ use crate::{
3939
utils::time::TimeRange,
4040
};
4141

42-
use super::{AlertConfig, AlertError};
42+
use super::{AlertConfig, AlertError, ThresholdConfig};
4343

4444
async fn get_tables_from_query(query: &str) -> Result<TableScanVisitor, AlertError> {
4545
let session_state = QUERY_SESSION.state();
@@ -120,16 +120,37 @@ pub async fn evaluate_alert(alert: &AlertConfig) -> Result<(), AlertError> {
120120
.await
121121
.map_err(|err| AlertError::CustomError(err.to_string()))?;
122122

123-
// let df = DataFrame::new(session_state, raw_logical_plan);
123+
let (group_expr, aggr_expr, filter_expr) = get_exprs(&alert.thresholds);
124+
let df = df.aggregate(group_expr, aggr_expr)?;
125+
126+
let nrows = df.clone().filter(filter_expr)?.count().await?;
127+
trace!("dataframe-\n{:?}", df.collect().await);
128+
129+
if nrows > 0 {
130+
trace!("ALERT!!!!!!");
131+
132+
// update state
133+
ALERTS
134+
.update_state(&alert.id.to_string(), AlertState::Triggered, true)
135+
.await?;
136+
} else {
137+
ALERTS
138+
.update_state(&alert.id.to_string(), AlertState::Resolved, false)
139+
.await?;
140+
}
141+
142+
Ok(())
143+
}
124144

145+
fn get_exprs(thresholds: &Vec<ThresholdConfig>) -> (Vec<Expr>, Vec<Expr>, Expr) {
125146
// for now group by is empty, we can include this later
126-
let group_expr = vec![];
147+
let group_expr: Vec<Expr> = vec![];
127148

128149
// agg expression
129-
let mut aggr_expr = vec![];
150+
let mut aggr_expr: Vec<Expr> = vec![];
130151

131152
let mut expr = Expr::Literal(datafusion::scalar::ScalarValue::Boolean(Some(true)));
132-
for threshold in &alert.thresholds {
153+
for threshold in thresholds {
133154
let res = match threshold.operator {
134155
crate::handlers::http::alerts::AlertOperator::GreaterThan => {
135156
col(&threshold.column).gt(lit(threshold.value))
@@ -177,23 +198,5 @@ pub async fn evaluate_alert(alert: &AlertConfig) -> Result<(), AlertError> {
177198
expr = expr.and(res);
178199
}
179200

180-
let df = df.aggregate(group_expr, aggr_expr)?;
181-
182-
let nrows = df.clone().filter(expr)?.count().await?;
183-
trace!("dataframe-\n{:?}", df.collect().await);
184-
185-
if nrows > 0 {
186-
trace!("ALERT!!!!!!");
187-
188-
// update state
189-
ALERTS
190-
.update_state(&alert.id.to_string(), AlertState::Triggered, true)
191-
.await?;
192-
} else {
193-
ALERTS
194-
.update_state(&alert.id.to_string(), AlertState::Resolved, false)
195-
.await?;
196-
}
197-
198-
Ok(())
201+
(group_expr, aggr_expr, expr)
199202
}

0 commit comments

Comments
 (0)