mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 09:07:09 +08:00
feat(analytics): add first_attempt as a filter for PaymentFilters (#6604)
This commit is contained in:
@ -64,4 +64,5 @@ pub struct PaymentFilterRow {
|
||||
pub card_last_4: Option<String>,
|
||||
pub card_issuer: Option<String>,
|
||||
pub error_reason: Option<String>,
|
||||
pub first_attempt: Option<bool>,
|
||||
}
|
||||
|
||||
@ -104,6 +104,11 @@ where
|
||||
.add_filter_in_range_clause(PaymentDimensions::ErrorReason, &self.error_reason)
|
||||
.attach_printable("Error adding error reason filter")?;
|
||||
}
|
||||
if !self.first_attempt.is_empty() {
|
||||
builder
|
||||
.add_filter_in_range_clause("first_attempt", &self.first_attempt)
|
||||
.attach_printable("Error adding first attempt filter")?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
@ -457,6 +457,12 @@ impl<T: AnalyticsDataSource> ToSql<T> for common_utils::id_type::CustomerId {
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: AnalyticsDataSource> ToSql<T> for bool {
|
||||
fn to_sql(&self, _table_engine: &TableEngine) -> error_stack::Result<String, ParsingError> {
|
||||
Ok(self.to_string().to_owned())
|
||||
}
|
||||
}
|
||||
|
||||
/// Implement `ToSql` on arrays of types that impl `ToString`.
|
||||
macro_rules! impl_to_sql_for_to_string {
|
||||
($($type:ty),+) => {
|
||||
|
||||
@ -569,6 +569,10 @@ impl<'a> FromRow<'a, PgRow> for super::payments::filters::PaymentFilterRow {
|
||||
ColumnNotFound(_) => Ok(Default::default()),
|
||||
e => Err(e),
|
||||
})?;
|
||||
let first_attempt: Option<bool> = row.try_get("first_attempt").or_else(|e| match e {
|
||||
ColumnNotFound(_) => Ok(Default::default()),
|
||||
e => Err(e),
|
||||
})?;
|
||||
Ok(Self {
|
||||
currency,
|
||||
status,
|
||||
@ -584,6 +588,7 @@ impl<'a> FromRow<'a, PgRow> for super::payments::filters::PaymentFilterRow {
|
||||
card_last_4,
|
||||
card_issuer,
|
||||
error_reason,
|
||||
first_attempt,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,6 +41,8 @@ pub struct PaymentFilters {
|
||||
pub card_issuer: Vec<String>,
|
||||
#[serde(default)]
|
||||
pub error_reason: Vec<String>,
|
||||
#[serde(default)]
|
||||
pub first_attempt: Vec<bool>,
|
||||
}
|
||||
|
||||
#[derive(
|
||||
|
||||
Reference in New Issue
Block a user