mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 17:19:15 +08:00
feat(analytics): added dispute as uri param to analytics info api (#3693)
This commit is contained in:
committed by
GitHub
parent
e0d8bb207e
commit
76ac1a753a
@ -130,7 +130,8 @@ impl AnalyticsDataSource for ClickhouseClient {
|
|||||||
match table {
|
match table {
|
||||||
AnalyticsCollection::Payment
|
AnalyticsCollection::Payment
|
||||||
| AnalyticsCollection::Refund
|
| AnalyticsCollection::Refund
|
||||||
| AnalyticsCollection::PaymentIntent => {
|
| AnalyticsCollection::PaymentIntent
|
||||||
|
| AnalyticsCollection::Dispute => {
|
||||||
TableEngine::CollapsingMergeTree { sign: "sign_flag" }
|
TableEngine::CollapsingMergeTree { sign: "sign_flag" }
|
||||||
}
|
}
|
||||||
AnalyticsCollection::SdkEvents => TableEngine::BasicTree,
|
AnalyticsCollection::SdkEvents => TableEngine::BasicTree,
|
||||||
@ -374,6 +375,7 @@ impl ToSql<ClickhouseClient> for AnalyticsCollection {
|
|||||||
Self::PaymentIntent => Ok("payment_intents".to_string()),
|
Self::PaymentIntent => Ok("payment_intents".to_string()),
|
||||||
Self::ConnectorEvents => Ok("connector_events_audit".to_string()),
|
Self::ConnectorEvents => Ok("connector_events_audit".to_string()),
|
||||||
Self::OutgoingWebhookEvent => Ok("outgoing_webhook_events_audit".to_string()),
|
Self::OutgoingWebhookEvent => Ok("outgoing_webhook_events_audit".to_string()),
|
||||||
|
Self::Dispute => Ok("dispute".to_string()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,11 @@ pub async fn get_domain_info(
|
|||||||
download_dimensions: None,
|
download_dimensions: None,
|
||||||
dimensions: utils::get_api_event_dimensions(),
|
dimensions: utils::get_api_event_dimensions(),
|
||||||
},
|
},
|
||||||
|
AnalyticsDomain::Dispute => GetInfoResponse {
|
||||||
|
metrics: utils::get_dispute_metrics_info(),
|
||||||
|
download_dimensions: None,
|
||||||
|
dimensions: utils::get_dispute_dimensions(),
|
||||||
|
},
|
||||||
};
|
};
|
||||||
Ok(info)
|
Ok(info)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -445,6 +445,7 @@ impl ToSql<SqlxClient> for AnalyticsCollection {
|
|||||||
.attach_printable("ConnectorEvents table is not implemented for Sqlx"))?,
|
.attach_printable("ConnectorEvents table is not implemented for Sqlx"))?,
|
||||||
Self::OutgoingWebhookEvent => Err(error_stack::report!(ParsingError::UnknownError)
|
Self::OutgoingWebhookEvent => Err(error_stack::report!(ParsingError::UnknownError)
|
||||||
.attach_printable("OutgoingWebhookEvents table is not implemented for Sqlx"))?,
|
.attach_printable("OutgoingWebhookEvents table is not implemented for Sqlx"))?,
|
||||||
|
Self::Dispute => Ok("dispute".to_string()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,6 +17,7 @@ pub enum AnalyticsDomain {
|
|||||||
Refunds,
|
Refunds,
|
||||||
SdkEvents,
|
SdkEvents,
|
||||||
ApiEvents,
|
ApiEvents,
|
||||||
|
Dispute,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, strum::AsRefStr, strum::Display, Clone, Copy)]
|
#[derive(Debug, strum::AsRefStr, strum::Display, Clone, Copy)]
|
||||||
@ -28,6 +29,7 @@ pub enum AnalyticsCollection {
|
|||||||
PaymentIntent,
|
PaymentIntent,
|
||||||
ConnectorEvents,
|
ConnectorEvents,
|
||||||
OutgoingWebhookEvent,
|
OutgoingWebhookEvent,
|
||||||
|
Dispute,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
use api_models::analytics::{
|
use api_models::analytics::{
|
||||||
api_event::{ApiEventDimensions, ApiEventMetrics},
|
api_event::{ApiEventDimensions, ApiEventMetrics},
|
||||||
|
disputes::{DisputeDimensions, DisputeMetrics},
|
||||||
payments::{PaymentDimensions, PaymentMetrics},
|
payments::{PaymentDimensions, PaymentMetrics},
|
||||||
refunds::{RefundDimensions, RefundMetrics},
|
refunds::{RefundDimensions, RefundMetrics},
|
||||||
sdk_events::{SdkEventDimensions, SdkEventMetrics},
|
sdk_events::{SdkEventDimensions, SdkEventMetrics},
|
||||||
@ -38,3 +39,11 @@ pub fn get_sdk_event_metrics_info() -> Vec<NameDescription> {
|
|||||||
pub fn get_api_event_metrics_info() -> Vec<NameDescription> {
|
pub fn get_api_event_metrics_info() -> Vec<NameDescription> {
|
||||||
ApiEventMetrics::iter().map(Into::into).collect()
|
ApiEventMetrics::iter().map(Into::into).collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_dispute_metrics_info() -> Vec<NameDescription> {
|
||||||
|
DisputeMetrics::iter().map(Into::into).collect()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_dispute_dimensions() -> Vec<NameDescription> {
|
||||||
|
DisputeDimensions::iter().map(Into::into).collect()
|
||||||
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@ pub use crate::payments::TimeRange;
|
|||||||
|
|
||||||
pub mod api_event;
|
pub mod api_event;
|
||||||
pub mod connector_events;
|
pub mod connector_events;
|
||||||
|
pub mod disputes;
|
||||||
pub mod outgoing_webhook_event;
|
pub mod outgoing_webhook_event;
|
||||||
pub mod payments;
|
pub mod payments;
|
||||||
pub mod refunds;
|
pub mod refunds;
|
||||||
|
|||||||
65
crates/api_models/src/analytics/disputes.rs
Normal file
65
crates/api_models/src/analytics/disputes.rs
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
use super::NameDescription;
|
||||||
|
|
||||||
|
#[derive(
|
||||||
|
Clone,
|
||||||
|
Debug,
|
||||||
|
Hash,
|
||||||
|
PartialEq,
|
||||||
|
Eq,
|
||||||
|
serde::Serialize,
|
||||||
|
serde::Deserialize,
|
||||||
|
strum::Display,
|
||||||
|
strum::EnumIter,
|
||||||
|
strum::AsRefStr,
|
||||||
|
)]
|
||||||
|
#[strum(serialize_all = "snake_case")]
|
||||||
|
#[serde(rename_all = "snake_case")]
|
||||||
|
pub enum DisputeMetrics {
|
||||||
|
DisputesChallenged,
|
||||||
|
DisputesWon,
|
||||||
|
DisputesLost,
|
||||||
|
TotalAmountDisputed,
|
||||||
|
TotalDisputeLostAmount,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(
|
||||||
|
Debug,
|
||||||
|
serde::Serialize,
|
||||||
|
serde::Deserialize,
|
||||||
|
strum::AsRefStr,
|
||||||
|
PartialEq,
|
||||||
|
PartialOrd,
|
||||||
|
Eq,
|
||||||
|
Ord,
|
||||||
|
strum::Display,
|
||||||
|
strum::EnumIter,
|
||||||
|
Clone,
|
||||||
|
Copy,
|
||||||
|
)]
|
||||||
|
#[serde(rename_all = "snake_case")]
|
||||||
|
#[strum(serialize_all = "snake_case")]
|
||||||
|
pub enum DisputeDimensions {
|
||||||
|
// Do not change the order of these enums
|
||||||
|
// Consult the Dashboard FE folks since these also affects the order of metrics on FE
|
||||||
|
Connector,
|
||||||
|
DisputeStatus,
|
||||||
|
ConnectorStatus,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<DisputeDimensions> for NameDescription {
|
||||||
|
fn from(value: DisputeDimensions) -> Self {
|
||||||
|
Self {
|
||||||
|
name: value.to_string(),
|
||||||
|
desc: String::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<DisputeMetrics> for NameDescription {
|
||||||
|
fn from(value: DisputeMetrics) -> Self {
|
||||||
|
Self {
|
||||||
|
name: value.to_string(),
|
||||||
|
desc: String::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user