fix(analytics): fixed response code to 501 (#3119)

Co-authored-by: Sampras Lopes <lsampras@pm.me>
This commit is contained in:
Sagar naik
2024-01-05 18:58:29 +05:30
committed by GitHub
parent 64babd3478
commit 00008c16c1
6 changed files with 42 additions and 22 deletions

View File

@ -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()),

View File

@ -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

View File

@ -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);