fix: add offset and limit to key transfer API (#5358)

Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
Co-authored-by: Narayan Bhat <48803246+Narayanbhat166@users.noreply.github.com>
This commit is contained in:
Kartikeya Hegde
2024-07-22 15:35:14 +05:30
committed by GitHub
parent bc19fca1f4
commit b393803a61
23 changed files with 1073 additions and 962 deletions

View File

@ -1,3 +1,4 @@
use api_models::admin::MerchantKeyTransferRequest;
use base64::Engine;
use common_utils::{
keymanager::transfer_key_to_key_manager,
@ -11,10 +12,16 @@ use crate::{consts::BASE64_ENGINE, errors, types::domain::UserKeyStore, SessionS
pub async fn transfer_encryption_key(
state: &SessionState,
req: MerchantKeyTransferRequest,
) -> errors::CustomResult<usize, errors::ApiErrorResponse> {
let db = &*state.store;
let key_stores = db
.get_all_key_stores(&state.into(), &db.get_master_key().to_vec().into())
.get_all_key_stores(
&state.into(),
&db.get_master_key().to_vec().into(),
req.from,
req.limit,
)
.await
.change_context(errors::ApiErrorResponse::InternalServerError)?;
send_request_to_key_service_for_merchant(state, key_stores).await
@ -24,17 +31,18 @@ pub async fn send_request_to_key_service_for_merchant(
state: &SessionState,
keys: Vec<MerchantKeyStore>,
) -> errors::CustomResult<usize, errors::ApiErrorResponse> {
futures::future::try_join_all(keys.into_iter().map(|key| async move {
let total = keys.len();
for key in keys {
let key_encoded = BASE64_ENGINE.encode(key.key.clone().into_inner().expose());
let req = EncryptionTransferRequest {
identifier: Identifier::Merchant(key.merchant_id.clone()),
key: key_encoded,
};
transfer_key_to_key_manager(&state.into(), req).await
}))
.await
.change_context(errors::ApiErrorResponse::InternalServerError)
.map(|v| v.len())
transfer_key_to_key_manager(&state.into(), req)
.await
.change_context(errors::ApiErrorResponse::InternalServerError)?;
}
Ok(total)
}
pub async fn send_request_to_key_service_for_user(