mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 01:57:45 +08:00 
			
		
		
		
	feat(payments): support for card_network filter in payments list (#5994)
This commit is contained in:
		| @ -4389,6 +4389,8 @@ pub struct PaymentListFilterConstraints { | |||||||
|     /// The order in which payments list should be sorted |     /// The order in which payments list should be sorted | ||||||
|     #[serde(default)] |     #[serde(default)] | ||||||
|     pub order: Order, |     pub order: Order, | ||||||
|  |     /// The List of all the card networks to filter payments list | ||||||
|  |     pub card_network: Option<Vec<enums::CardNetwork>>, | ||||||
| } | } | ||||||
| #[derive(Clone, Debug, serde::Serialize)] | #[derive(Clone, Debug, serde::Serialize)] | ||||||
| pub struct PaymentListFilters { | pub struct PaymentListFilters { | ||||||
| @ -4418,6 +4420,8 @@ pub struct PaymentListFiltersV2 { | |||||||
|     pub payment_method: HashMap<enums::PaymentMethod, HashSet<enums::PaymentMethodType>>, |     pub payment_method: HashMap<enums::PaymentMethod, HashSet<enums::PaymentMethodType>>, | ||||||
|     /// The list of available authentication types |     /// The list of available authentication types | ||||||
|     pub authentication_type: Vec<enums::AuthenticationType>, |     pub authentication_type: Vec<enums::AuthenticationType>, | ||||||
|  |     /// The list of available card networks | ||||||
|  |     pub card_network: Vec<enums::CardNetwork>, | ||||||
| } | } | ||||||
|  |  | ||||||
| #[derive(Clone, Debug, serde::Serialize)] | #[derive(Clone, Debug, serde::Serialize)] | ||||||
|  | |||||||
| @ -1294,6 +1294,7 @@ pub struct PaymentIntentListParams { | |||||||
|     pub ending_before_id: Option<id_type::PaymentId>, |     pub ending_before_id: Option<id_type::PaymentId>, | ||||||
|     pub limit: Option<u32>, |     pub limit: Option<u32>, | ||||||
|     pub order: api_models::payments::Order, |     pub order: api_models::payments::Order, | ||||||
|  |     pub card_network: Option<Vec<storage_enums::CardNetwork>>, | ||||||
| } | } | ||||||
|  |  | ||||||
| impl From<api_models::payments::PaymentListConstraints> for PaymentIntentFetchConstraints { | impl From<api_models::payments::PaymentListConstraints> for PaymentIntentFetchConstraints { | ||||||
| @ -1327,6 +1328,7 @@ impl From<api_models::payments::PaymentListConstraints> for PaymentIntentFetchCo | |||||||
|             ending_before_id: ending_before, |             ending_before_id: ending_before, | ||||||
|             limit: Some(std::cmp::min(limit, PAYMENTS_LIST_MAX_LIMIT_V1)), |             limit: Some(std::cmp::min(limit, PAYMENTS_LIST_MAX_LIMIT_V1)), | ||||||
|             order: Default::default(), |             order: Default::default(), | ||||||
|  |             card_network: None, | ||||||
|         })) |         })) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -1351,6 +1353,7 @@ impl From<common_utils::types::TimeRange> for PaymentIntentFetchConstraints { | |||||||
|             ending_before_id: None, |             ending_before_id: None, | ||||||
|             limit: None, |             limit: None, | ||||||
|             order: Default::default(), |             order: Default::default(), | ||||||
|  |             card_network: None, | ||||||
|         })) |         })) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -1373,6 +1376,7 @@ impl From<api_models::payments::PaymentListFilterConstraints> for PaymentIntentF | |||||||
|             authentication_type, |             authentication_type, | ||||||
|             merchant_connector_id, |             merchant_connector_id, | ||||||
|             order, |             order, | ||||||
|  |             card_network, | ||||||
|         } = value; |         } = value; | ||||||
|         if let Some(payment_intent_id) = payment_id { |         if let Some(payment_intent_id) = payment_id { | ||||||
|             Self::Single { payment_intent_id } |             Self::Single { payment_intent_id } | ||||||
| @ -1395,6 +1399,7 @@ impl From<api_models::payments::PaymentListFilterConstraints> for PaymentIntentF | |||||||
|                 ending_before_id: None, |                 ending_before_id: None, | ||||||
|                 limit: Some(std::cmp::min(limit, PAYMENTS_LIST_MAX_LIMIT_V2)), |                 limit: Some(std::cmp::min(limit, PAYMENTS_LIST_MAX_LIMIT_V2)), | ||||||
|                 order, |                 order, | ||||||
|  |                 card_network, | ||||||
|             })) |             })) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -3902,6 +3902,7 @@ pub async fn get_payment_filters( | |||||||
|             status: enums::IntentStatus::iter().collect(), |             status: enums::IntentStatus::iter().collect(), | ||||||
|             payment_method: payment_method_types_map, |             payment_method: payment_method_types_map, | ||||||
|             authentication_type: enums::AuthenticationType::iter().collect(), |             authentication_type: enums::AuthenticationType::iter().collect(), | ||||||
|  |             card_network: enums::CardNetwork::iter().collect(), | ||||||
|         }, |         }, | ||||||
|     )) |     )) | ||||||
| } | } | ||||||
|  | |||||||
| @ -939,6 +939,9 @@ impl<T: DatabaseStore> PaymentIntentInterface for crate::RouterStore<T> { | |||||||
|                     None => query, |                     None => query, | ||||||
|                 }; |                 }; | ||||||
|  |  | ||||||
|  |                 if let Some(card_network) = ¶ms.card_network { | ||||||
|  |                     query = query.filter(pa_dsl::card_network.eq_any(card_network.clone())); | ||||||
|  |                 } | ||||||
|                 query |                 query | ||||||
|             } |             } | ||||||
|         }; |         }; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Riddhiagrawal001
					Riddhiagrawal001