@@ -13,7 +13,7 @@ use orm::pos_rewards::PoSRewardDb;
1313use orm:: schema:: { bonds, crawler_state, pos_rewards, unbonds, validators} ;
1414use orm:: unbond:: UnbondDb ;
1515use orm:: validators:: {
16- ValidatorDb , ValidatorSortByDb , ValidatorStateDb , validator_sort_by ,
16+ validator_sort_by , ValidatorDb , ValidatorSortByDb , ValidatorStateDb ,
1717} ;
1818
1919use super :: utils:: { Paginate , PaginatedResponseDb } ;
@@ -359,21 +359,28 @@ impl PosRepositoryTrait for PosRepository {
359359 ) -> Result < Vec < PoSRewardDb > , String > {
360360 let conn = self . app_state . get_db_connection ( ) . await ;
361361
362- conn. interact ( move |conn| {
363- let epoch = epoch. map ( |e| e as i32 ) . unwrap_or_else ( || {
362+ conn. interact (
363+ move |conn| -> Result < Vec < PoSRewardDb > , diesel:: result:: Error > {
364+ let epoch = match epoch {
365+ Some ( e) => e as i32 ,
366+ None => {
367+ // Properly propagate database errors with ?
368+ let max_epoch = pos_rewards:: table
369+ . select ( diesel:: dsl:: max ( pos_rewards:: epoch) )
370+ . first :: < Option < i32 > > ( conn) ?;
371+
372+ max_epoch. unwrap_or ( 0 ) // This is fine - just unwrapping the Option, not a Result
373+ }
374+ } ;
375+
376+ // Propagate errors from this query too
364377 pos_rewards:: table
365- . select ( diesel:: dsl:: max ( pos_rewards:: epoch) )
366- . first :: < Option < _ > > ( conn)
367- . unwrap_or ( Some ( 0 ) )
368- . unwrap_or ( 0 )
369- } ) ;
370-
371- pos_rewards:: table
372- . filter ( pos_rewards:: epoch. eq ( & epoch) )
373- . filter ( pos_rewards:: dsl:: owner. eq ( address) )
374- . select ( PoSRewardDb :: as_select ( ) )
375- . get_results ( conn)
376- } )
378+ . filter ( pos_rewards:: epoch. eq ( & epoch) )
379+ . filter ( pos_rewards:: dsl:: owner. eq ( & address) )
380+ . select ( PoSRewardDb :: as_select ( ) )
381+ . get_results ( conn)
382+ } ,
383+ )
377384 . await
378385 . map_err ( |e| e. to_string ( ) ) ?
379386 . map_err ( |e| e. to_string ( ) )
0 commit comments