mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-02 04:04:43 +08:00
fix(analytics): fixed response code to 501 (#3119)
Co-authored-by: Sampras Lopes <lsampras@pm.me>
This commit is contained in:
@ -8,6 +8,7 @@ use api_models::analytics::{
|
||||
AnalyticsMetadata, ApiEventFiltersResponse, GetApiEventFiltersRequest,
|
||||
GetApiEventMetricRequest, MetricsResponse,
|
||||
};
|
||||
use common_utils::errors::ReportSwitchExt;
|
||||
use error_stack::{IntoReport, ResultExt};
|
||||
use router_env::{
|
||||
instrument, logger,
|
||||
@ -32,16 +33,18 @@ pub async fn api_events_core(
|
||||
merchant_id: String,
|
||||
) -> AnalyticsResult<Vec<ApiLogsResult>> {
|
||||
let data = match pool {
|
||||
AnalyticsProvider::Sqlx(_) => Err(FiltersError::NotImplemented)
|
||||
.into_report()
|
||||
.attach_printable("SQL Analytics is not implemented for API Events"),
|
||||
AnalyticsProvider::Sqlx(_) => Err(FiltersError::NotImplemented(
|
||||
"API Events not implemented for SQLX",
|
||||
))
|
||||
.into_report()
|
||||
.attach_printable("SQL Analytics is not implemented for API Events"),
|
||||
AnalyticsProvider::Clickhouse(pool) => get_api_event(&merchant_id, req, pool).await,
|
||||
AnalyticsProvider::CombinedSqlx(_sqlx_pool, ckh_pool)
|
||||
| AnalyticsProvider::CombinedCkh(_sqlx_pool, ckh_pool) => {
|
||||
get_api_event(&merchant_id, req, ckh_pool).await
|
||||
}
|
||||
}
|
||||
.change_context(AnalyticsError::UnknownError)?;
|
||||
.switch()?;
|
||||
Ok(data)
|
||||
}
|
||||
|
||||
@ -58,9 +61,11 @@ pub async fn get_filters(
|
||||
let mut res = ApiEventFiltersResponse::default();
|
||||
for dim in req.group_by_names {
|
||||
let values = match pool {
|
||||
AnalyticsProvider::Sqlx(_pool) => Err(FiltersError::NotImplemented)
|
||||
.into_report()
|
||||
.attach_printable("SQL Analytics is not implemented for API Events"),
|
||||
AnalyticsProvider::Sqlx(_pool) => Err(FiltersError::NotImplemented(
|
||||
"API Events not implemented for SQLX",
|
||||
))
|
||||
.into_report()
|
||||
.attach_printable("SQL Analytics is not implemented for API Events"),
|
||||
AnalyticsProvider::Clickhouse(ckh_pool)
|
||||
| AnalyticsProvider::CombinedSqlx(_, ckh_pool)
|
||||
| AnalyticsProvider::CombinedCkh(_, ckh_pool) => {
|
||||
@ -68,7 +73,7 @@ pub async fn get_filters(
|
||||
.await
|
||||
}
|
||||
}
|
||||
.change_context(AnalyticsError::UnknownError)?
|
||||
.switch()?
|
||||
.into_iter()
|
||||
.filter_map(|fil: ApiEventFilter| match dim {
|
||||
ApiEventDimensions::StatusCode => fil.status_code.map(|i| i.to_string()),
|
||||
|
||||
@ -7,6 +7,7 @@ use api_models::analytics::{
|
||||
AnalyticsMetadata, GetSdkEventFiltersRequest, GetSdkEventMetricRequest, MetricsResponse,
|
||||
SdkEventFiltersResponse,
|
||||
};
|
||||
use common_utils::errors::ReportSwitchExt;
|
||||
use error_stack::{IntoReport, ResultExt};
|
||||
use router_env::{instrument, logger, tracing};
|
||||
|
||||
@ -28,16 +29,18 @@ pub async fn sdk_events_core(
|
||||
publishable_key: String,
|
||||
) -> AnalyticsResult<Vec<SdkEventsResult>> {
|
||||
match pool {
|
||||
AnalyticsProvider::Sqlx(_) => Err(FiltersError::NotImplemented)
|
||||
.into_report()
|
||||
.attach_printable("SQL Analytics is not implemented for Sdk Events"),
|
||||
AnalyticsProvider::Sqlx(_) => Err(FiltersError::NotImplemented(
|
||||
"SDK Events not implemented for SQLX",
|
||||
))
|
||||
.into_report()
|
||||
.attach_printable("SQL Analytics is not implemented for Sdk Events"),
|
||||
AnalyticsProvider::Clickhouse(pool) => get_sdk_event(&publishable_key, req, pool).await,
|
||||
AnalyticsProvider::CombinedSqlx(_sqlx_pool, ckh_pool)
|
||||
| AnalyticsProvider::CombinedCkh(_sqlx_pool, ckh_pool) => {
|
||||
get_sdk_event(&publishable_key, req, ckh_pool).await
|
||||
}
|
||||
}
|
||||
.change_context(AnalyticsError::UnknownError)
|
||||
.switch()
|
||||
}
|
||||
|
||||
#[instrument(skip_all)]
|
||||
@ -159,9 +162,11 @@ pub async fn get_filters(
|
||||
if let Some(publishable_key) = publishable_key {
|
||||
for dim in req.group_by_names {
|
||||
let values = match pool {
|
||||
AnalyticsProvider::Sqlx(_pool) => Err(FiltersError::NotImplemented)
|
||||
.into_report()
|
||||
.attach_printable("SQL Analytics is not implemented for SDK Events"),
|
||||
AnalyticsProvider::Sqlx(_pool) => Err(FiltersError::NotImplemented(
|
||||
"SDK Events not implemented for SQLX",
|
||||
))
|
||||
.into_report()
|
||||
.attach_printable("SQL Analytics is not implemented for SDK Events"),
|
||||
AnalyticsProvider::Clickhouse(pool) => {
|
||||
get_sdk_event_filter_for_dimension(dim, publishable_key, &req.time_range, pool)
|
||||
.await
|
||||
|
||||
@ -8,6 +8,7 @@ use common_utils::{
|
||||
use error_stack::{report, Report, ResultExt};
|
||||
|
||||
use super::query::QueryBuildingError;
|
||||
use crate::errors::AnalyticsError;
|
||||
|
||||
#[derive(serde::Deserialize, Debug, serde::Serialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
@ -124,8 +125,8 @@ pub enum FiltersError {
|
||||
#[error("Error running Query")]
|
||||
QueryExecutionFailure,
|
||||
#[allow(dead_code)]
|
||||
#[error("Not Implemented")]
|
||||
NotImplemented,
|
||||
#[error("Not Implemented: {0}")]
|
||||
NotImplemented(&'static str),
|
||||
}
|
||||
|
||||
impl ErrorSwitch<FiltersError> for QueryBuildingError {
|
||||
@ -134,4 +135,13 @@ impl ErrorSwitch<FiltersError> for QueryBuildingError {
|
||||
}
|
||||
}
|
||||
|
||||
impl ErrorSwitch<AnalyticsError> for FiltersError {
|
||||
fn switch(&self) -> AnalyticsError {
|
||||
match self {
|
||||
Self::QueryBuildingError | Self::QueryExecutionFailure => AnalyticsError::UnknownError,
|
||||
Self::NotImplemented(a) => AnalyticsError::NotImplemented(a),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl_misc_api_event_type!(AnalyticsDomain);
|
||||
|
||||
Reference in New Issue
Block a user