diff --git a/server/src/main.rs b/server/src/main.rs index cf16c08..59a71b3 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -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 diff --git a/server/src/members.rs b/server/src/members.rs index 151236b..944e0b5 100644 --- a/server/src/members.rs +++ b/server/src/members.rs @@ -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 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) = 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, 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;