summaryrefslogtreecommitdiff
path: root/src/database/sessions.rs
diff options
context:
space:
mode:
authorTyler Murphy <tylermurphy534@gmail.com>2023-01-26 17:29:16 -0500
committerTyler Murphy <tylermurphy534@gmail.com>2023-01-26 17:29:16 -0500
commit88209d88236c3d865a9f5174a0dced31920859bf (patch)
tree89a9985927393005cf632950b585a6a227b1c679 /src/database/sessions.rs
downloadxssbook-88209d88236c3d865a9f5174a0dced31920859bf.tar.gz
xssbook-88209d88236c3d865a9f5174a0dced31920859bf.tar.bz2
xssbook-88209d88236c3d865a9f5174a0dced31920859bf.zip
i did things
Diffstat (limited to 'src/database/sessions.rs')
-rw-r--r--src/database/sessions.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/database/sessions.rs b/src/database/sessions.rs
new file mode 100644
index 0000000..7866d76
--- /dev/null
+++ b/src/database/sessions.rs
@@ -0,0 +1,42 @@
+use rusqlite::OptionalExtension;
+
+use crate::{database, 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(())
+}
+
+pub fn get_session(token: &str) -> Result<Option<Session>, rusqlite::Error> {
+ let conn = database::connect()?;
+ let mut stmt = conn.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)
+}
+
+pub fn set_session(user_id: u64, token: &str) -> Result<(), Box<dyn std::error::Error>> {
+ let conn = database::connect()?;
+ let sql = "INSERT OR REPLACE INTO sessions (user_id, token) VALUES (?, ?);";
+ conn.execute(sql, (user_id, token))?;
+ Ok(())
+}
+
+pub fn delete_session(user_id: u64) -> Result<(), Box<dyn std::error::Error>> {
+ let conn = database::connect()?;
+ let sql = "DELETE FROM sessions WHERE user_id = ?;";
+ conn.execute(sql, [user_id])?;
+ Ok(())
+} \ No newline at end of file