switching to serde_json for some heavy lifting of json conversions

This commit is contained in:
shockrah 2020-08-06 19:56:14 -07:00
parent bb426897d2
commit 19ee2c2577
2 changed files with 7 additions and 10 deletions

View File

@ -4,6 +4,7 @@ extern crate dotenv;
extern crate getrandom; extern crate getrandom;
extern crate bcrypt; extern crate bcrypt;
extern crate base64; extern crate base64;
extern crate serde;
use std::net::SocketAddr; use std::net::SocketAddr;
use std::convert::Infallible; // our main dispatcher basically never fails hence why we use this use std::convert::Infallible; // our main dispatcher basically never fails hence why we use this

View File

@ -4,9 +4,11 @@ use hyper::header::{HeaderName, HeaderValue};
use mysql_async::{Conn, Pool, error::Error as MySqlError}; use mysql_async::{Conn, Pool, error::Error as MySqlError};
use mysql_async::prelude::{params, Queryable}; use mysql_async::prelude::{params, Queryable};
use serde_json::Value; use serde_json::Value;
use serde::Serialize;
use crate::db_types::{UBigInt, BigInt, Integer, VarChar}; use crate::db_types::{UBigInt, BigInt, Integer, VarChar};
#[derive(Serialize)]
pub struct Member { pub struct Member {
pub id: UBigInt, pub id: UBigInt,
pub secret: VarChar, pub secret: VarChar,
@ -16,12 +18,6 @@ pub struct Member {
pub permissions: UBigInt, pub permissions: UBigInt,
} }
impl Member {
pub fn to_json(&self) -> String {
unimplemented!()
}
}
struct InsertableMember<'n> { struct InsertableMember<'n> {
name: &'n str, name: &'n str,
permissions: u64, permissions: u64,
@ -51,8 +47,8 @@ pub async fn insert_new_member(p: &Pool, name: VarChar, perms: u64) -> Result<Me
"INSERT INTO members(secret, name, joindate, status, permissions) "INSERT INTO members(secret, name, joindate, status, permissions)
VALUES(:secret, :name, :joindate, :status, :permissions)", VALUES(:secret, :name, :joindate, :status, :permissions)",
mysql_async::params!{ mysql_async::params!{
"secret" => secret.as_ref(), "secret" => secret.clone(),
"name" => name.as_ref(), "name" => name.clone(),
"joindate" => now, "joindate" => now,
"status" => 0, "status" => 0,
"permissions" => perms "permissions" => perms
@ -62,7 +58,7 @@ pub async fn insert_new_member(p: &Pool, name: VarChar, perms: u64) -> Result<Me
let db_row_result: (Conn, Option<UBigInt>) = conn.first_exec( let db_row_result: (Conn, Option<UBigInt>) = conn.first_exec(
"SELECT id FROM members WHERE secret = :secret", "SELECT id FROM members WHERE secret = :secret",
params!{ params!{
"secret" => secret.as_ref() "secret" => secret.clone()
}).await?; }).await?;
Ok(Member { Ok(Member {
@ -92,7 +88,7 @@ async fn general_new_user(p: &Pool, resp: &mut Response<Body>, params: Value) {
let json_hdr_name = HeaderName::from_static("Content-Type"); let json_hdr_name = HeaderName::from_static("Content-Type");
let json_hdr_val = HeaderValue::from_static("application/json"); let json_hdr_val = HeaderValue::from_static("application/json");
resp.headers_mut().insert(json_hdr_name, json_hdr_val); resp.headers_mut().insert(json_hdr_name, json_hdr_val);
*resp.body_mut() = Body::from(new_member.to_json()); *resp.body_mut() = Body::from(serde_json::to_string(&new_member).unwrap());
}, },
Err(_) => { Err(_) => {
*resp.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *resp.status_mut() = StatusCode::INTERNAL_SERVER_ERROR;