summaryrefslogtreecommitdiff
path: root/src/database/sessions.rs
diff options
context:
space:
mode:
authorTyler Murphy <tylermurphy534@gmail.com>2023-02-15 00:01:44 -0500
committerTyler Murphy <tylermurphy534@gmail.com>2023-02-15 00:01:44 -0500
commitaec4fdecc10be35cde5dc42308960f10bc452187 (patch)
tree67233229c6839c78d1bd3db0147467da30843f44 /src/database/sessions.rs
parentbug fixes (diff)
downloadxssbook-aec4fdecc10be35cde5dc42308960f10bc452187.tar.gz
xssbook-aec4fdecc10be35cde5dc42308960f10bc452187.tar.bz2
xssbook-aec4fdecc10be35cde5dc42308960f10bc452187.zip
make database calls 1 conn
Diffstat (limited to 'src/database/sessions.rs')
-rw-r--r--src/database/sessions.rs105
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(())
+ }
}