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