-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:
parent
39a4d2a247
commit
c1ef4c6336
@ -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!()
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user