From 5db976b9dea76f06db4d14052dcb4cac9a314c52 Mon Sep 17 00:00:00 2001 From: shockrah Date: Sun, 21 Feb 2021 17:21:17 -0800 Subject: [PATCH] + New route for /members/me/nickname ! No testing yet that comes in next patch, with any required fixes + db now has specific method for Member::update_nickk --- json-api/db/src/member.rs | 15 ++++++++++++++- json-api/src/main.rs | 1 + json-api/src/members.rs | 26 ++++++++++++++++++++++++++ json-api/src/routes.rs | 1 + 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/json-api/db/src/member.rs b/json-api/db/src/member.rs index e2613a7..1e4aab0 100644 --- a/json-api/db/src/member.rs +++ b/json-api/db/src/member.rs @@ -199,7 +199,7 @@ impl Member { pub async fn update_perms(p: &Pool, uid: UBigInt, permissions: UBigInt) -> Result { //! @return on_sucess Ok(NewPermisionsMask) - //! + //! @throws Err(SqlError) let conn = p.get_conn().await?; conn.drop_exec( "UPDATE members SET permissions = :perms WHERE id = :id", @@ -210,4 +210,17 @@ impl Member { Ok(permissions) } + + pub async fn update_nick(p: &Pool, uid: UBigInt, new_nick: &str) -> Result<(), SqlError> { + let conn = p.get_conn().await?; + + conn.drop_exec( + "UPDATE members SET name = :nick WHERE id = id", + params!{ + "id" => uid, + "nick" => new_nick + }).await?; + + Ok(()) + } } diff --git a/json-api/src/main.rs b/json-api/src/main.rs index 0bf324a..88a86a1 100644 --- a/json-api/src/main.rs +++ b/json-api/src/main.rs @@ -73,6 +73,7 @@ async fn route_dispatcher( /* MEMBERS */ (GET, routes::GET_ONLINE_MEMBERS) => members::get_online_members(pool, resp).await, (GET, routes::GET_MYSELF) => members::get_self(pool, resp, params).await, + (POST, routes::SELF_UPDATE_NICKNAME) => members::post_self_nickname(pool, resp, params).await, /* OWNER */ (POST, routes::SET_NEW_ADMIN) => admin::new_admin(pool, resp, params).await, /* META ROUTE */ diff --git a/json-api/src/members.rs b/json-api/src/members.rs index 3ccfb22..6e425b2 100644 --- a/json-api/src/members.rs +++ b/json-api/src/members.rs @@ -46,3 +46,29 @@ pub async fn get_self(p: &Pool, response: &mut Response, params: HashMap, params: HashMap) { + /* + * @param nick + * @respond StatusCode + * + * Prety straightforward response here as its literally just the status code + * Assuming we have good input + */ + + let nick = qs_param!(params, "nicK", String); + + *response.status_mut() = if let Some(nick) = nick { + + let uid = qs_param!(params, "id", u64).unwrap(); + match Member::update_nick(p, uid, nick.as_ref()).await { + Ok(_) => StatusCode::OK, + Err(e) => { + eprintln!("{}", e); + StatusCode::INTERNAL_SERVER_ERROR + } + } + } else { + StatusCode::BAD_REQUEST + } +} diff --git a/json-api/src/routes.rs b/json-api/src/routes.rs index eede13f..71ecc09 100644 --- a/json-api/src/routes.rs +++ b/json-api/src/routes.rs @@ -16,6 +16,7 @@ pub const MESSAGE_FROM_ID: Rstr = "/message/from_id"; // requires @channel(id) pub const GET_ONLINE_MEMBERS: Rstr = "/members/get_online"; // requires none pub const GET_MYSELF: Rstr = "/members/me"; // @requires none +pub const SELF_UPDATE_NICKNAME: Rstr= "/members/me/nickname"; // ADMIN ROUTES