mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 10:06:32 +08:00 
			
		
		
		
	feat: Kv changes for V2 feature (#8198)
Co-authored-by: Akshay S <akshay.s@juspay.in> Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
		| @ -23,6 +23,32 @@ use crate::{ | ||||
|  | ||||
| impl KvStorePartition for customers::Customer {} | ||||
|  | ||||
| #[cfg(feature = "v2")] | ||||
| mod label { | ||||
|     use common_utils::id_type; | ||||
|  | ||||
|     pub(super) const MODEL_NAME: &str = "customer_v2"; | ||||
|     pub(super) const CLUSTER_LABEL: &str = "cust"; | ||||
|  | ||||
|     pub(super) fn get_global_id_label(global_customer_id: &id_type::GlobalCustomerId) -> String { | ||||
|         format!( | ||||
|             "customer_global_id_{}", | ||||
|             global_customer_id.get_string_repr() | ||||
|         ) | ||||
|     } | ||||
|  | ||||
|     pub(super) fn get_merchant_scoped_id_label( | ||||
|         merchant_id: &id_type::MerchantId, | ||||
|         merchant_reference_id: &id_type::CustomerId, | ||||
|     ) -> String { | ||||
|         format!( | ||||
|             "customer_mid_{}_mrefid_{}", | ||||
|             merchant_id.get_string_repr(), | ||||
|             merchant_reference_id.get_string_repr() | ||||
|         ) | ||||
|     } | ||||
| } | ||||
|  | ||||
| #[async_trait::async_trait] | ||||
| impl<T: DatabaseStore> domain::CustomerInterface for kv_router_store::KVRouterStore<T> { | ||||
|     type Error = StorageError; | ||||
| @ -283,22 +309,32 @@ impl<T: DatabaseStore> domain::CustomerInterface for kv_router_store::KVRouterSt | ||||
|             .construct_new() | ||||
|             .await | ||||
|             .change_context(StorageError::EncryptionError)?; | ||||
|         let storage_scheme = Box::pin(decide_storage_scheme::<_, customers::Customer>( | ||||
|  | ||||
|         let decided_storage_scheme = Box::pin(decide_storage_scheme::<_, customers::Customer>( | ||||
|             self, | ||||
|             storage_scheme, | ||||
|             Op::Insert, | ||||
|         )) | ||||
|         .await; | ||||
|         new_customer.update_storage_scheme(storage_scheme); | ||||
|         new_customer.update_storage_scheme(decided_storage_scheme); | ||||
|  | ||||
|         let mut reverse_lookups = Vec::new(); | ||||
|  | ||||
|         if let Some(ref merchant_ref_id) = new_customer.merchant_reference_id { | ||||
|             let reverse_lookup_merchant_scoped_id = | ||||
|                 label::get_merchant_scoped_id_label(&new_customer.merchant_id, merchant_ref_id); | ||||
|             reverse_lookups.push(reverse_lookup_merchant_scoped_id); | ||||
|         } | ||||
|  | ||||
|         self.insert_resource( | ||||
|             state, | ||||
|             key_store, | ||||
|             storage_scheme, | ||||
|             decided_storage_scheme, | ||||
|             new_customer.clone().insert(&conn), | ||||
|             new_customer.clone().into(), | ||||
|             kv_router_store::InsertResourceParams { | ||||
|                 insertable: kv::Insertable::Customer(new_customer.clone()), | ||||
|                 reverse_lookups: vec![], | ||||
|                 reverse_lookups, | ||||
|                 identifier, | ||||
|                 key, | ||||
|                 resource_type: "customer", | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 akshay-97
					akshay-97