From 721ac2fe5fc79885def9cb78e63eba344f4da95f Mon Sep 17 00:00:00 2001 From: Gianmarco Fraccaroli Date: Tue, 9 Jul 2024 11:35:47 +0200 Subject: [PATCH] withdraw method accept optional epoch --- webserver/src/dto/pos.rs | 2 ++ webserver/src/handler/pos.rs | 4 ++-- webserver/src/service/pos.rs | 18 ++++++++++++------ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/webserver/src/dto/pos.rs b/webserver/src/dto/pos.rs index 9a670ee0..e0f061dc 100644 --- a/webserver/src/dto/pos.rs +++ b/webserver/src/dto/pos.rs @@ -61,4 +61,6 @@ pub struct UnbondsDto { pub struct WithdrawsDto { #[validate(range(min = 1, max = 10000))] pub page: Option, + #[validate(range(min = 1, max = 10000))] + pub epoch: Option, } diff --git a/webserver/src/handler/pos.rs b/webserver/src/handler/pos.rs index c6f0424d..483717cc 100644 --- a/webserver/src/handler/pos.rs +++ b/webserver/src/handler/pos.rs @@ -128,14 +128,14 @@ pub async fn get_merged_unbonds( pub async fn get_withdraws( _headers: HeaderMap, query: Query, - Path((address, epoch)): Path<(String, u64)>, + Path(address): Path, State(state): State, ) -> Result>>, ApiError> { let page = query.page.unwrap_or(1); let (withdraws, total_pages, total_withdraws) = state .pos_service - .get_withdraws_by_address(address, epoch, page) + .get_withdraws_by_address(address, query.epoch, page) .await?; let response = diff --git a/webserver/src/service/pos.rs b/webserver/src/service/pos.rs index 37f515f0..710035fe 100644 --- a/webserver/src/service/pos.rs +++ b/webserver/src/service/pos.rs @@ -227,16 +227,22 @@ impl PosService { pub async fn get_withdraws_by_address( &self, address: String, - current_epoch: u64, + epoch: Option, page: u64, ) -> Result<(Vec, u64, u64), PoSError> { + let epoch = if let Some(epoch) = epoch { + epoch as i32 + } else { + self.chain_repo + .get_chain_state() + .await + .map_err(PoSError::Database)? + .epoch + }; + let (db_withdraws, total_pages, total_items) = self .pos_repo - .find_withdraws_by_address( - address, - current_epoch as i32, - page as i64, - ) + .find_withdraws_by_address(address, epoch, page as i64) .await .map_err(PoSError::Database)?;