diff options
Diffstat (limited to 'src/database')
| -rw-r--r-- | src/database/database.rs | 7 | ||||
| -rw-r--r-- | src/database/sql/initialize.sql | 3 | ||||
| -rw-r--r-- | src/database/sql/insert_user.sql | 2 | ||||
| -rw-r--r-- | src/database/user.rs | 6 |
4 files changed, 12 insertions, 6 deletions
diff --git a/src/database/database.rs b/src/database/database.rs index ca0e018..7444779 100644 --- a/src/database/database.rs +++ b/src/database/database.rs @@ -33,7 +33,7 @@ impl Database { Ok(Database { pool }) } - pub fn insert_user(&self, email: &str, username: &str, password_hash: &str) -> Result<User, DatabaseError> { + pub fn insert_user(&self, email: &str, username: &str, password_hash: &str, is_admin: bool) -> Result<User, DatabaseError> { static QUERY: &str = include_str!("sql/insert_user.sql"); let conn = self.pool .get() @@ -42,12 +42,13 @@ impl Database { .map_err(|e| DatabaseError::Query(e.to_string()))?; Ok(statement - .query_one((email, username, password_hash), |row| { + .query_one((email, username, password_hash, is_admin), |row| { Ok(User::new( row.get("id")?, email.to_owned(), username.to_owned(), password_hash.to_owned(), + is_admin )) }) .map_err(|e| DatabaseError::Query(e.to_string()))? @@ -69,6 +70,7 @@ impl Database { row.get("email")?, row.get("username")?, row.get("password_hash")?, + row.get("is_admin")?, )) }) .optional() @@ -91,6 +93,7 @@ impl Database { row.get("email")?, row.get("username")?, row.get("password_hash")?, + row.get("is_admin")? )) }) .optional() diff --git a/src/database/sql/initialize.sql b/src/database/sql/initialize.sql index 1c2a40f..72b7468 100644 --- a/src/database/sql/initialize.sql +++ b/src/database/sql/initialize.sql @@ -8,7 +8,8 @@ CREATE TABLE IF NOT EXISTS user ( id INTEGER PRIMARY KEY, email TEXT UNIQUE NOT NULL, username TEXT UNIQUE NOT NULL, - password_hash TEXT NOT NULL + password_hash TEXT NOT NULL, + is_admin INTEGER NOT NULL ); CREATE TABLE IF NOT EXISTS submission ( diff --git a/src/database/sql/insert_user.sql b/src/database/sql/insert_user.sql index 6b67678..6017cf5 100644 --- a/src/database/sql/insert_user.sql +++ b/src/database/sql/insert_user.sql @@ -1 +1 @@ -INSERT INTO user (email, username, password_hash) VALUES (?1, ?2, ?3) RETURNING id; +INSERT INTO user (email, username, password_hash, is_admin) VALUES (?1, ?2, ?3, ?4) RETURNING id; diff --git a/src/database/user.rs b/src/database/user.rs index c580226..c6674c7 100644 --- a/src/database/user.rs +++ b/src/database/user.rs @@ -6,15 +6,17 @@ pub struct User { email: String, username: String, password_hash: String, + is_admin: bool } impl User { - pub(super) fn new(id: i64, email: String, username: String, password_hash: String) -> Self { - Self { id, email, username, password_hash } + pub(super) fn new(id: i64, email: String, username: String, password_hash: String, is_admin: bool) -> Self { + Self { id, email, username, password_hash, is_admin } } pub fn id(&self) -> i64 { self.id } pub fn email(&self) -> &str { &self.email } pub fn username(&self) -> &str { &self.username } + pub fn is_admin(&self) -> bool { self.is_admin } pub fn password_hash(&self) -> &str { &self.password_hash } } |
