Skip to content

Commit d4c7c18

Browse files
committed
controllers/crate_owner_invitation: Implement TryFrom<ListQueryParams> for ListFilter
1 parent 3b303f6 commit d4c7c18

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

src/controllers/crate_owner_invitation.rs

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::auth::Authentication;
44
use crate::controllers::helpers::pagination::{Page, PaginationOptions, PaginationQueryParams};
55
use crate::models::{Crate, CrateOwnerInvitation, Rights, User};
66
use crate::schema::{crate_owner_invitations, crates, users};
7-
use crate::util::errors::{bad_request, forbidden, internal, AppResult};
7+
use crate::util::errors::{bad_request, forbidden, internal, AppResult, BoxedAppError};
88
use crate::util::RequestUtils;
99
use crate::views::{
1010
EncodableCrateOwnerInvitation, EncodableCrateOwnerInvitationV1, EncodablePublicUser,
@@ -101,14 +101,7 @@ pub async fn list_crate_owner_invitations(
101101
let mut conn = app.db_read().await?;
102102
let auth = AuthCheck::only_cookie().check(&req, &mut conn).await?;
103103

104-
let filter = if let Some(crate_name) = params.crate_name {
105-
ListFilter::CrateName(crate_name.clone())
106-
} else if let Some(id) = params.invitee_id {
107-
ListFilter::InviteeId(id)
108-
} else {
109-
return Err(bad_request("missing or invalid filter"));
110-
};
111-
104+
let filter = params.try_into()?;
112105
let list = prepare_list(&app, &req, auth, filter, &mut conn).await?;
113106
Ok(Json(list))
114107
}
@@ -118,6 +111,22 @@ enum ListFilter {
118111
InviteeId(i32),
119112
}
120113

114+
impl TryFrom<ListQueryParams> for ListFilter {
115+
type Error = BoxedAppError;
116+
117+
fn try_from(params: ListQueryParams) -> Result<Self, Self::Error> {
118+
let filter = if let Some(crate_name) = params.crate_name {
119+
ListFilter::CrateName(crate_name.clone())
120+
} else if let Some(id) = params.invitee_id {
121+
ListFilter::InviteeId(id)
122+
} else {
123+
return Err(bad_request("missing or invalid filter"));
124+
};
125+
126+
Ok(filter)
127+
}
128+
}
129+
121130
async fn prepare_list(
122131
state: &AppState,
123132
req: &Parts,

0 commit comments

Comments
 (0)