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 bcrypt;
extern crate base64;
extern crate serde;
use std::net::SocketAddr;
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::prelude::{params, Queryable};
use serde_json::Value;
use serde::Serialize;
use crate::db_types::{UBigInt, BigInt, Integer, VarChar};
#[derive(Serialize)]
pub struct Member {
pub id: UBigInt,
pub secret: VarChar,
@ -16,12 +18,6 @@ pub struct Member {
pub permissions: UBigInt,
}
impl Member {
pub fn to_json(&self) -> String {
unimplemented!()
}
}
struct InsertableMember<'n> {
name: &'n str,
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)
VALUES(:secret, :name, :joindate, :status, :permissions)",
mysql_async::params!{
"secret" => secret.as_ref(),
"name" => name.as_ref(),
"secret" => secret.clone(),
"name" => name.clone(),
"joindate" => now,
"status" => 0,
"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(
"SELECT id FROM members WHERE secret = :secret",
params!{
"secret" => secret.as_ref()
"secret" => secret.clone()
}).await?;
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_val = HeaderValue::from_static("application/json");
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(_) => {
*resp.status_mut() = StatusCode::INTERNAL_SERVER_ERROR;