From 5fc3e2a55394d37d0db1155e638a937b296745d7 Mon Sep 17 00:00:00 2001 From: shockrah Date: Sun, 7 Mar 2021 17:47:24 -0800 Subject: [PATCH] =?UTF-8?q?=E2=9D=97=20/channels/create=20refactored=20to?= =?UTF-8?q?=20use=20the=20new=20db-lib=20api=20=E2=9D=97=20Reduced=20branc?= =?UTF-8?q?hing=20a=20shit=20ton?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Testing was ass but it should pass client tests now, back to normal --- json-api/src/channels.rs | 61 +++++++++++++++------------------------- 1 file changed, 22 insertions(+), 39 deletions(-) diff --git a/json-api/src/channels.rs b/json-api/src/channels.rs index 2b4f9e5..0236e43 100644 --- a/json-api/src/channels.rs +++ b/json-api/src/channels.rs @@ -42,51 +42,34 @@ pub async fn create_channel(pool: &Pool, response: &mut Response, params: */ // Theres an extra un-needed unwrap to be cut out from this proc // specifically with the desc parameter + use db::Response::*; - let name = params.get("name"); // str - - let description = if let Some(dval) = params.get("description") { // &str - dval - } else { - "No description" + let name = params.get("name"); + let kind = qs_param!(params, "type", i32); + let description = match params.get("description") { + Some(d) => d, + None => "No description" }; - let kind = match params.get("kind") { // 1 for vc 2 for text - Some(value) => { - let v = value; - if let Ok(kval) = v.to_string().parse::() { - Some(kval) - } else { - None - } - }, - None => None - }; + *response.status_mut() = if name.is_some() && kind.is_some() { + let (name, kind) = (name.unwrap(), kind.unwrap()); - match (name, kind) { - (Some(name), Some(kind)) => { - use db::channels::{TEXT_CHANNEL, VOICE_CHANNEL}; - if (kind == VOICE_CHANNEL) ^ (kind == TEXT_CHANNEL) { - let db_resp = Channel::new(pool, name, description, kind).await; - use db::Response::*; - match db_resp { - Row(channel) => set_json_body(response, json!(channel)), - RestrictedInput(msg) => { - eprintln!("{}", msg); - *response.status_mut() = StatusCode::BAD_REQUEST; - }, - Empty => *response.status_mut() = StatusCode::NOT_FOUND, - Other(msg) => { - *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; - eprintln!("\t[ Channels ] {}", msg); - }, - _ => *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR // ngmi - }; - } else { - *response.status_mut() = StatusCode::BAD_REQUEST; // restriciting to 1|2 for valid channel kinds + if let Ok(resp) = Channel::add(pool, name, description, kind).await { + match resp { + Row(channel) => { + set_json_body(response, json!(channel)); + StatusCode::OK + }, + + RestrictedInput(_) => StatusCode::UNPROCESSABLE_ENTITY, + Other(_) => StatusCode::INTERNAL_SERVER_ERROR, + _ => StatusCode::INTERNAL_SERVER_ERROR } + } else { + StatusCode::INTERNAL_SERVER_ERROR } - _ => *response.status_mut() = StatusCode::BAD_REQUEST + } else { + StatusCode::BAD_REQUEST } }