switching to serde_json for some heavy lifting of json conversions
This commit is contained in:
parent
bb426897d2
commit
19ee2c2577
@ -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
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user