-Removed _most_ direct sql manipulation for invite creation

- Removed unused/irrelevant unit tests, which now have to be rebuilt for the new codebase
This commit is contained in:
shockrah 2021-02-03 21:26:26 -08:00
parent 39a4d2a247
commit c1ef4c6336

View File

@ -1,9 +1,7 @@
use serde_json::{Value, json};
use serde::Serialize;
use mysql_async;
use mysql_async::{Conn, Pool};
use mysql_async::error::Error;
use mysql_async::prelude::{params, Queryable};
use hyper::{Response, Body, StatusCode};
@ -15,16 +13,11 @@ use std::collections::HashMap;
use db::{UBigInt, BigInt};
use db::common::FromDB;
use db::member::Member;
use db::invites::Invite;
use crate::http;
#[derive(Serialize)]
struct Invite {
id: BigInt, // doubles as the timestamp for when it dies
uses: Option<BigInt>, // optional because some links are permanent
expires: bool,
}
/*
* Error handling:
* All errors raisable from this module come from mysql_async and thus
@ -127,21 +120,10 @@ pub async fn join(pool: &Pool, response: &mut Response<Body>, params: HashMap<&s
}
}
async fn insert_new_invite(pool: &Pool, invite: &Invite) -> Result<(), Error>{
let conn = pool.get_conn().await?;
conn.prep_exec(
"INSERT INTO invites (id, uses, expires)
VALUES (:id, :uses, :expires)", params!{
"id" => invite.id,
"uses" => invite.uses,
"expires" => invite.expires
}).await?;
Ok(())
}
async fn process_expires_parameter(p: &Pool, exp: &Value, id: UBigInt) -> bool {
// TODO: fix this somewhat unsafe code
// TODO: BRO THIS SHIT
// NOTE: its unsafe because of these lazy as heck unwraps everywhere
use crate::perms::{CREATE_PERM_INVITES, CREATE_TMP_INVITES};
let conn = p.get_conn().await.unwrap();
@ -210,13 +192,9 @@ pub async fn create(pool: &Pool, response: &mut Response<Body>, params: HashMap<
};
// TODO: prolly add some kind option to set an expire time
let invite = Invite {
id: (Utc::now() + chrono::Duration::minutes(30)).timestamp(),
uses: use_count,
expires: expirey_request
};
let invite = Invite::new(use_count, expirey_request);
match insert_new_invite(&pool, &invite).await {
match invite.add(pool).await {
Ok(_) => {
// return the id of the invite
// Link format from here is basically hostname.io:4536/join?code=<some-code>
@ -228,21 +206,3 @@ pub async fn create(pool: &Pool, response: &mut Response<Body>, params: HashMap<
}
}
}
#[cfg(test)]
mod invites_test {
/*
* INVITE CREATION
* Good - Bad - Malicious
*/
use crate::testing::{get_pool, hyper_resp};
use hyper::StatusCode;
use serde_json::Value;
#[tokio::test]
async fn create_invite_good() {
todo!()
}
}