/messages/send now correctyl tells the user they're wrong about sendingmessages to a non-existant channel
This commit is contained in:
parent
7c95519402
commit
dfe53b323e
@ -125,14 +125,31 @@ impl Message {
|
||||
VALUES (:time, :content, :author, :channel)";
|
||||
let now = Utc::now().timestamp();
|
||||
|
||||
conn.prep_exec(q, params!{
|
||||
let res = conn.prep_exec(q, params!{
|
||||
"time" => now,
|
||||
"content" => content,
|
||||
"author" => uid,
|
||||
"channel" => cid
|
||||
}).await?;
|
||||
}).await;
|
||||
if let Err(e) = res {
|
||||
return match e {
|
||||
SqlError::Server(err) => {
|
||||
if err.code == 1452 {
|
||||
return Ok(Response::RestrictedInput("Channel not found".into()))
|
||||
}
|
||||
else {
|
||||
Ok(Response::Other(sql_err!("db::messages::send")))
|
||||
}
|
||||
},
|
||||
_ => Ok(Response::Other(sql_err!("db::messages::send")))
|
||||
}
|
||||
|
||||
}
|
||||
// all good response
|
||||
else {
|
||||
return Ok(Response::Empty);
|
||||
}
|
||||
|
||||
return Ok(Response::Empty);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
use mysql_async::Pool;
|
||||
use hyper::{Response, Body, StatusCode};
|
||||
use serde_json::Value;
|
||||
use hyper::header::HeaderValue;
|
||||
use serde_json::json;
|
||||
|
||||
|
||||
pub async fn send_message(pool: &Pool, response: &mut Response<Body>, params: Value) {
|
||||
@ -19,11 +21,30 @@ pub async fn send_message(pool: &Pool, response: &mut Response<Body>, params: Va
|
||||
if let (Some(message), Some(cid)) = (content, channel) {
|
||||
// call returns empty on sucess so we don't need to do anything
|
||||
// TODO: loggin
|
||||
if let Err(issue) = db::messages::Message::send(pool, message, cid, author).await {
|
||||
let db_result = db::messages::Message::send(pool, message, cid, author).await;
|
||||
if let Err(issue) = db_result {
|
||||
*response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR;
|
||||
eprintln!("\t{}", issue);
|
||||
}
|
||||
// if there's no issue then we don't need to do anything at all
|
||||
else {
|
||||
match db_result.unwrap() {
|
||||
db::Response::RestrictedInput(msg) => {
|
||||
// user issue
|
||||
*response.status_mut() = StatusCode::BAD_REQUEST;
|
||||
response.headers_mut().insert("Content-Type",
|
||||
HeaderValue::from_static("application/json"));
|
||||
|
||||
let payload = json!({"msg": msg});
|
||||
*response.body_mut() = Body::from(payload.to_string());
|
||||
},
|
||||
db::Response::Empty => {}, // nothing to do hyper defaults to 200
|
||||
db::Response::Other(msg) => {
|
||||
eprintln!("{}", msg);
|
||||
*response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR;
|
||||
},
|
||||
_ => *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR
|
||||
};
|
||||
}
|
||||
}
|
||||
else {
|
||||
*response.status_mut() = StatusCode::BAD_REQUEST;
|
||||
|
Loading…
Reference in New Issue
Block a user