@@ -12,9 +12,9 @@ use crate::models::pats::Scopes;
1212use crate :: models:: teams:: { OrganizationPermissions , ProjectPermissions } ;
1313use crate :: queue:: session:: AuthQueue ;
1414use crate :: routes:: ApiError ;
15+ use crate :: util:: error:: Context ;
1516use actix_web:: { HttpRequest , HttpResponse , get, web} ;
1617use ariadne:: ids:: UserId ;
17- use eyre:: eyre;
1818use rust_decimal:: Decimal ;
1919use serde:: { Deserialize , Serialize } ;
2020
@@ -689,15 +689,20 @@ pub struct EditTeamMember {
689689
690690pub async fn edit_team_member (
691691 req : HttpRequest ,
692- info : web:: Path < ( TeamId , UserId ) > ,
692+ info : web:: Path < ( TeamId , String ) > ,
693693 pool : web:: Data < PgPool > ,
694694 edit_member : web:: Json < EditTeamMember > ,
695695 redis : web:: Data < RedisPool > ,
696696 session_queue : web:: Data < AuthQueue > ,
697697) -> Result < HttpResponse , ApiError > {
698698 let ids = info. into_inner ( ) ;
699699 let id = ids. 0 . into ( ) ;
700- let user_id = ids. 1 . into ( ) ;
700+
701+ let user_id = DBUser :: get ( & ids. 1 , & * * pool, & redis)
702+ . await
703+ . wrap_internal_err ( "failed to fetch the specified user" ) ?
704+ . wrap_request_err ( "the specified user does not exist" ) ?
705+ . id ;
701706
702707 let current_user = get_user_from_headers (
703708 & req,
@@ -709,24 +714,21 @@ pub async fn edit_team_member(
709714 . await ?
710715 . 1 ;
711716
712- let team_association =
713- DBTeam :: get_association ( id, & * * pool) . await ?. ok_or_else ( || {
714- ApiError :: InvalidInput (
715- "The team specified does not exist" . to_string ( ) ,
716- )
717- } ) ?;
717+ let team_association = DBTeam :: get_association ( id, & * * pool)
718+ . await
719+ . wrap_internal_err ( "failed to fetch the specified team" ) ?
720+ . wrap_request_err ( "the specified team does not exist" ) ?;
718721 let member =
719722 DBTeamMember :: get_from_user_id ( id, current_user. id . into ( ) , & * * pool)
720723 . await ?;
721724 let edit_member_db =
722725 DBTeamMember :: get_from_user_id_pending ( id, user_id, & * * pool)
723- . await ?
724- . ok_or_else ( || {
725- ApiError :: Request ( eyre ! (
726- "This member does not exist in this team - \
727- the member must first be created via `POST`"
728- ) )
729- } ) ?;
726+ . await
727+ . wrap_internal_err ( "failed to fetch team member" ) ?
728+ . wrap_request_err (
729+ "this member does not exist in this team - \
730+ the member must first be created via `POST`",
731+ ) ?;
730732
731733 let mut transaction = pool. begin ( ) . await ?;
732734
0 commit comments