feat: add endpoint to retrieve user by username
This commit is contained in:
@@ -497,6 +497,23 @@ pub async fn get_users_list(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn get_user_by_username(
|
||||||
|
State(state): State<AppState>,
|
||||||
|
Path(username): Path<String>,
|
||||||
|
) -> impl IntoResponse {
|
||||||
|
let uname = match domain::value_objects::Username::new(username) {
|
||||||
|
Ok(u) => u,
|
||||||
|
Err(_) => return StatusCode::NOT_FOUND.into_response(),
|
||||||
|
};
|
||||||
|
match state.app_ctx.user_repository.find_by_username(&uname).await {
|
||||||
|
Ok(Some(user)) => {
|
||||||
|
axum::response::Redirect::permanent(&format!("/users/{}", user.id().value()))
|
||||||
|
.into_response()
|
||||||
|
}
|
||||||
|
_ => StatusCode::NOT_FOUND.into_response(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub async fn get_user_profile(
|
pub async fn get_user_profile(
|
||||||
OptionalCookieUser(user_id): OptionalCookieUser,
|
OptionalCookieUser(user_id): OptionalCookieUser,
|
||||||
State(state): State<AppState>,
|
State(state): State<AppState>,
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ fn html_routes(rate_limit: u64) -> Router<AppState> {
|
|||||||
let base = Router::new()
|
let base = Router::new()
|
||||||
.route("/", routing::get(handlers::html::get_activity_feed))
|
.route("/", routing::get(handlers::html::get_activity_feed))
|
||||||
.route("/users", routing::get(handlers::html::get_users_list))
|
.route("/users", routing::get(handlers::html::get_users_list))
|
||||||
|
.route("/u/{username}", routing::get(handlers::html::get_user_by_username))
|
||||||
.route(
|
.route(
|
||||||
"/users/{id}",
|
"/users/{id}",
|
||||||
routing::get(handlers::html::get_user_profile),
|
routing::get(handlers::html::get_user_profile),
|
||||||
|
|||||||
Reference in New Issue
Block a user