diff --git a/server/src/invites.rs b/server/src/invites.rs index ab90946..9780615 100644 --- a/server/src/invites.rs +++ b/server/src/invites.rs @@ -1,24 +1,30 @@ // Module handles creating invites for potentially new users +use diesel::{self, prelude::*}; use rand::random; use chrono::{Duration, Utc}; - -#[derive(Debug)] -struct Invite { - hash: u64, - uses: i32, - expire: i64, // comes from a date time object ngl famalam -} +use crate::DBConn; +use crate::models::Invite; +use crate::schema; #[get("/generate")] -pub fn generate_invite() -> String { +pub fn generate_invite(conn: DBConn) -> Result { let dt = Utc::now() + Duration::minutes(30); let invite = Invite { - hash: random::(), - uses: 1, - expire: dt.timestamp(), + id: random::(), + uses: Some(1), + expires: dt.timestamp() as u64 }; + let id = invite.id; + // Insert our newly made invite into the invites table + let _new_invite = diesel::insert_into(schema::invites::table) + .values(invite) + .execute(&conn.0) + .map_err(|err| -> String { + println!("Could not insert new invite into table so it was not created {:?}", err); + "Failure to create new invite".into() + })?; // Insert the new invite into our database - format!("freechat.io/invite/{}", invite.hash) + Ok(format!("freechat.io/invite/{}", id)) } #[get("/")]