diff options
Diffstat (limited to 'src/database/sessions.rs')
-rw-r--r-- | src/database/sessions.rs | 105 |
1 files changed, 52 insertions, 53 deletions
diff --git a/src/database/sessions.rs b/src/database/sessions.rs index 9adccd4..a50bb51 100644 --- a/src/database/sessions.rs +++ b/src/database/sessions.rs @@ -1,65 +1,64 @@ use rusqlite::OptionalExtension; use tracing::instrument; -use crate::{database, types::session::Session}; +use crate::types::session::Session; -pub fn init() -> Result<(), rusqlite::Error> { - let sql = " - CREATE TABLE IF NOT EXISTS sessions ( - user_id INTEGER PRIMARY KEY NOT NULL, - token TEXT NOT NULL, - FOREIGN KEY(user_id) REFERENCES users(user_id) - ); - "; - let conn = database::connect()?; - conn.execute(sql, ())?; - Ok(()) -} +use super::Database; + +impl Database { + pub fn init_sessions(&self) -> Result<(), rusqlite::Error> { + let sql = " + CREATE TABLE IF NOT EXISTS sessions ( + user_id INTEGER PRIMARY KEY NOT NULL, + token TEXT NOT NULL, + FOREIGN KEY(user_id) REFERENCES users(user_id) + ); + "; + self.0.execute(sql, ())?; + Ok(()) + } + + #[instrument(skip(self))] + pub fn get_session(&self, token: &str) -> Result<Option<Session>, rusqlite::Error> { + tracing::trace!("Retrieving session"); + let mut stmt = self.0.prepare("SELECT * FROM sessions WHERE token = ?")?; + let row = stmt + .query_row([token], |row| { + Ok(Session { + user_id: row.get(0)?, + token: row.get(1)?, + }) + }) + .optional()?; + Ok(row) + } -#[instrument()] -pub fn get_session(token: &str) -> Result<Option<Session>, rusqlite::Error> { - tracing::trace!("Retrieving session"); - let conn = database::connect()?; - let mut stmt = conn.prepare("SELECT * FROM sessions WHERE token = ?")?; - let row = stmt - .query_row([token], |row| { + #[instrument(skip(self))] + pub fn get_all_sessions(&self) -> Result<Vec<Session>, rusqlite::Error> { + tracing::trace!("Retrieving session"); + let mut stmt = self.0.prepare("SELECT * FROM sessions")?; + let row = stmt.query_map([], |row| { Ok(Session { user_id: row.get(0)?, token: row.get(1)?, }) - }) - .optional()?; - Ok(row) -} - -#[instrument()] -pub fn get_all_sessions() -> Result<Vec<Session>, rusqlite::Error> { - tracing::trace!("Retrieving session"); - let conn = database::connect()?; - let mut stmt = conn.prepare("SELECT * FROM sessions")?; - let row = stmt.query_map([], |row| { - Ok(Session { - user_id: row.get(0)?, - token: row.get(1)?, - }) - })?; - Ok(row.into_iter().flatten().collect()) -} + })?; + Ok(row.into_iter().flatten().collect()) + } -#[instrument()] -pub fn set_session(user_id: u64, token: &str) -> Result<(), Box<dyn std::error::Error>> { - tracing::trace!("Setting new session"); - let conn = database::connect()?; - let sql = "INSERT OR REPLACE INTO sessions (user_id, token) VALUES (?, ?);"; - conn.execute(sql, (user_id, token))?; - Ok(()) -} + #[instrument(skip(self))] + pub fn set_session(&self, user_id: u64, token: &str) -> Result<(), Box<dyn std::error::Error>> { + tracing::trace!("Setting new session"); + let sql = "INSERT OR REPLACE INTO sessions (user_id, token) VALUES (?, ?);"; + self.0.execute(sql, (user_id, token))?; + Ok(()) + } -#[instrument()] -pub fn delete_session(user_id: u64) -> Result<(), Box<dyn std::error::Error>> { - tracing::trace!("Deleting session"); - let conn = database::connect()?; - let sql = "DELETE FROM sessions WHERE user_id = ?;"; - conn.execute(sql, [user_id])?; - Ok(()) + #[instrument(skip(self))] + pub fn delete_session(&self, user_id: u64) -> Result<(), Box<dyn std::error::Error>> { + tracing::trace!("Deleting session"); + let sql = "DELETE FROM sessions WHERE user_id = ?;"; + self.0.execute(sql, [user_id])?; + Ok(()) + } } |