Skip to content

Commit a479b2e

Browse files
committed
fix: propagate DB errors
1 parent 9a9cb88 commit a479b2e

1 file changed

Lines changed: 22 additions & 15 deletions

File tree

  • webserver/src/repository

webserver/src/repository/pos.rs

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use orm::pos_rewards::PoSRewardDb;
1313
use orm::schema::{bonds, crawler_state, pos_rewards, unbonds, validators};
1414
use orm::unbond::UnbondDb;
1515
use orm::validators::{
16-
ValidatorDb, ValidatorSortByDb, ValidatorStateDb, validator_sort_by,
16+
validator_sort_by, ValidatorDb, ValidatorSortByDb, ValidatorStateDb,
1717
};
1818

1919
use 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

Comments
 (0)