From ef7eca3462dbfa7a6be66465d091c6d4f8b38687 Mon Sep 17 00:00:00 2001 From: shockrah Date: Sun, 12 Jul 2020 15:09:03 -0700 Subject: [PATCH] poc for insertion of new users --- server/src/main.rs | 1 + server/src/members.rs | 43 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/server/src/main.rs b/server/src/main.rs index aa7c66f..f88dabc 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -28,6 +28,7 @@ mod members; mod messages; mod badges; mod http_params; +mod perms; async fn route_dispatcher(pool: &Pool, resp: &mut Response, meth: &Method, path: &str, params: serde_json::Value) { diff --git a/server/src/members.rs b/server/src/members.rs index 0829659..7875438 100644 --- a/server/src/members.rs +++ b/server/src/members.rs @@ -1,7 +1,48 @@ +use mysql_async::{Pool, Conn}; use crate::badges::Badge; +use crate::err::DbError; + pub struct Member { id: u64, name: String, permissions: u64, - badges: Vec, + badges: Option>, +} + +struct InsertableMember<'n> { + name: &'n str, + permissions: u64, + badges: Option> +} + +async fn insert_new_member<'nm>(conn: &Conn, name: &'nm str) + -> Result> { + // Updates both the members and keys table accordingly + use crate::perms::{JOIN_VOICE, SEND_MESSAGES}; + let m = InsertableMember { + name: name, + permissions: JOIN_VOICE | SEND_MESSAGES, // can join voice and send messages by default + badges: None + }; + // TODO: this stuff once the invites/ user generation to be done +// conn.batch_exec( +// r"INSERT INTO `members` (name, status)", +// params!{ +// "name" => name, +// "join" +// } +// ).await; + Err(DbError::from("Could not create user")) +} + +#[cfg(test)] +mod members_tests { + use mysql_async::{Pool, Conn}; + use std::env::var; + use dotenv::dotenv; + #[test] + fn db_create_member() { + let conn = Pool::new(&var("DATABASE_URL").unwrap()).get_conn(); + + } } \ No newline at end of file