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