summaryrefslogtreecommitdiff
path: root/src/database
diff options
context:
space:
mode:
authorTyler Murphy <tylermurphy534@gmail.com>2023-01-28 18:04:00 -0500
committerTyler Murphy <tylermurphy534@gmail.com>2023-01-28 18:04:00 -0500
commitb58654fd70958d89b344a6f7acac204f67ae9879 (patch)
tree60a1960d0d265c9f661e633022164f33e099c81c /src/database
parentnew rust, clippy (diff)
downloadxssbook-b58654fd70958d89b344a6f7acac204f67ae9879.tar.gz
xssbook-b58654fd70958d89b344a6f7acac204f67ae9879.tar.bz2
xssbook-b58654fd70958d89b344a6f7acac204f67ae9879.zip
fmt
Diffstat (limited to 'src/database')
-rw-r--r--src/database/mod.rs4
-rw-r--r--src/database/posts.rs43
-rw-r--r--src/database/sessions.rs14
-rw-r--r--src/database/users.rs94
4 files changed, 111 insertions, 44 deletions
diff --git a/src/database/mod.rs b/src/database/mod.rs
index 59cc377..d48f352 100644
--- a/src/database/mod.rs
+++ b/src/database/mod.rs
@@ -1,6 +1,6 @@
pub mod posts;
-pub mod users;
pub mod sessions;
+pub mod users;
pub fn connect() -> Result<rusqlite::Connection, rusqlite::Error> {
rusqlite::Connection::open("xssbook.db")
@@ -11,4 +11,4 @@ pub fn init() -> Result<(), rusqlite::Error> {
posts::init()?;
sessions::init()?;
Ok(())
-} \ No newline at end of file
+}
diff --git a/src/database/posts.rs b/src/database/posts.rs
index 6086fdc..58470f0 100644
--- a/src/database/posts.rs
+++ b/src/database/posts.rs
@@ -1,11 +1,11 @@
use std::collections::HashSet;
-use std::time::{SystemTime, UNIX_EPOCH, Duration};
+use std::time::{Duration, SystemTime, UNIX_EPOCH};
use rusqlite::{OptionalExtension, Row};
use tracing::instrument;
-use crate::types::post::Post;
use crate::database;
+use crate::types::post::Post;
pub fn init() -> Result<(), rusqlite::Error> {
let sql = "
@@ -40,7 +40,14 @@ fn post_from_row(row: &Row) -> Result<Post, rusqlite::Error> {
return Err(rusqlite::Error::InvalidQuery)
};
- Ok(Post{post_id, user_id, content, likes, comments, date})
+ Ok(Post {
+ post_id,
+ user_id,
+ content,
+ likes,
+ comments,
+ date,
+ })
}
#[instrument()]
@@ -48,10 +55,12 @@ pub fn get_post(post_id: u64) -> Result<Option<Post>, rusqlite::Error> {
tracing::trace!("Retrieving post");
let conn = database::connect()?;
let mut stmt = conn.prepare("SELECT * FROM posts WHERE post_id = ?")?;
- let row = stmt.query_row([post_id], |row| {
- let row = post_from_row(row)?;
- Ok(row)
- }).optional()?;
+ let row = stmt
+ .query_row([post_id], |row| {
+ let row = post_from_row(row)?;
+ Ok(row)
+ })
+ .optional()?;
Ok(row)
}
@@ -73,7 +82,7 @@ pub fn get_users_posts(user_id: u64) -> Result<Vec<Post>, rusqlite::Error> {
tracing::trace!("Retrieving users posts");
let conn = database::connect()?;
let mut stmt = conn.prepare("SELECT * FROM posts WHERE user_id = ? ORDER BY post_id DESC")?;
- let row = stmt.query_map([user_id], |row| {
+ let row = stmt.query_map([user_id], |row| {
let row = post_from_row(row)?;
Ok(row)
})?;
@@ -91,10 +100,16 @@ pub fn add_post(user_id: u64, content: &str) -> Result<Post, rusqlite::Error> {
let Ok(comments_json) = serde_json::to_string(&comments) else {
return Err(rusqlite::Error::InvalidQuery)
};
- let date = u64::try_from(SystemTime::now().duration_since(UNIX_EPOCH).unwrap_or(Duration::ZERO).as_millis()).unwrap_or(0);
+ let date = u64::try_from(
+ SystemTime::now()
+ .duration_since(UNIX_EPOCH)
+ .unwrap_or(Duration::ZERO)
+ .as_millis(),
+ )
+ .unwrap_or(0);
let conn = database::connect()?;
let mut stmt = conn.prepare("INSERT INTO posts (user_id, content, likes, comments, date) VALUES(?,?,?,?,?) RETURNING *;")?;
- let post = stmt.query_row((user_id, content, likes_json, comments_json, date), |row| {
+ let post = stmt.query_row((user_id, content, likes_json, comments_json, date), |row| {
let row = post_from_row(row)?;
Ok(row)
})?;
@@ -102,7 +117,11 @@ pub fn add_post(user_id: u64, content: &str) -> Result<Post, rusqlite::Error> {
}
#[instrument()]
-pub fn update_post(post_id: u64, likes: &HashSet<u64>, comments: &Vec<(u64, String)>) -> Result<(), rusqlite::Error> {
+pub fn update_post(
+ post_id: u64,
+ likes: &HashSet<u64>,
+ comments: &Vec<(u64, String)>,
+) -> Result<(), rusqlite::Error> {
tracing::trace!("Updating post");
let Ok(likes_json) = serde_json::to_string(&likes) else {
return Err(rusqlite::Error::InvalidQuery)
@@ -114,4 +133,4 @@ pub fn update_post(post_id: u64, likes: &HashSet<u64>, comments: &Vec<(u64, Stri
let sql = "UPDATE posts SET likes = ?, comments = ? WHERE post_id = ?";
conn.execute(sql, (likes_json, comments_json, post_id))?;
Ok(())
-} \ No newline at end of file
+}
diff --git a/src/database/sessions.rs b/src/database/sessions.rs
index 2283b58..8d4ca73 100644
--- a/src/database/sessions.rs
+++ b/src/database/sessions.rs
@@ -21,12 +21,14 @@ 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| {
- Ok(Session {
- user_id: row.get(0)?,
- token: row.get(1)?,
+ let row = stmt
+ .query_row([token], |row| {
+ Ok(Session {
+ user_id: row.get(0)?,
+ token: row.get(1)?,
+ })
})
- }).optional()?;
+ .optional()?;
Ok(row)
}
@@ -46,4 +48,4 @@ pub fn delete_session(user_id: u64) -> Result<(), Box<dyn std::error::Error>> {
let sql = "DELETE FROM sessions WHERE user_id = ?;";
conn.execute(sql, [user_id])?;
Ok(())
-} \ No newline at end of file
+}
diff --git a/src/database/users.rs b/src/database/users.rs
index a578e69..05a3a57 100644
--- a/src/database/users.rs
+++ b/src/database/users.rs
@@ -1,8 +1,8 @@
-use std::time::{SystemTime, UNIX_EPOCH, Duration};
use rusqlite::{OptionalExtension, Row};
+use std::time::{Duration, SystemTime, UNIX_EPOCH};
use tracing::instrument;
-use crate::{database, types::user::User, api::auth::RegistrationRequet};
+use crate::{api::auth::RegistrationRequet, database, types::user::User};
pub fn init() -> Result<(), rusqlite::Error> {
let sql = "
@@ -36,9 +36,24 @@ fn user_from_row(row: &Row, hide_password: bool) -> Result<User, rusqlite::Error
let month = row.get(8)?;
let year = row.get(9)?;
- let password = if hide_password { String::new() } else { password };
+ let password = if hide_password {
+ String::new()
+ } else {
+ password
+ };
- Ok(User{user_id, firstname, lastname, email, password, gender,date, day, month, year})
+ Ok(User {
+ user_id,
+ firstname,
+ lastname,
+ email,
+ password,
+ gender,
+ date,
+ day,
+ month,
+ year,
+ })
}
#[instrument()]
@@ -46,34 +61,46 @@ pub fn get_user_by_id(user_id: u64, hide_password: bool) -> Result<Option<User>,
tracing::trace!("Retrieving user by id");
let conn = database::connect()?;
let mut stmt = conn.prepare("SELECT * FROM users WHERE user_id = ?")?;
- let row = stmt.query_row([user_id], |row| {
- let row = user_from_row(row, hide_password)?;
- Ok(row)
- }).optional()?;
+ let row = stmt
+ .query_row([user_id], |row| {
+ let row = user_from_row(row, hide_password)?;
+ Ok(row)
+ })
+ .optional()?;
Ok(row)
}
#[instrument()]
-pub fn get_user_by_email(email: &str, hide_password: bool) -> Result<Option<User>, rusqlite::Error> {
+pub fn get_user_by_email(
+ email: &str,
+ hide_password: bool,
+) -> Result<Option<User>, rusqlite::Error> {
tracing::trace!("Retrieving user by email");
let conn = database::connect()?;
let mut stmt = conn.prepare("SELECT * FROM users WHERE email = ?")?;
- let row = stmt.query_row([email], |row| {
- let row = user_from_row(row, hide_password)?;
- Ok(row)
- }).optional()?;
+ let row = stmt
+ .query_row([email], |row| {
+ let row = user_from_row(row, hide_password)?;
+ Ok(row)
+ })
+ .optional()?;
Ok(row)
}
#[instrument()]
-pub fn get_user_by_password(password: &str, hide_password: bool) -> Result<Option<User>, rusqlite::Error> {
+pub fn get_user_by_password(
+ password: &str,
+ hide_password: bool,
+) -> Result<Option<User>, rusqlite::Error> {
tracing::trace!("Retrieving user by password");
let conn = database::connect()?;
let mut stmt = conn.prepare("SELECT * FROM users WHERE password = ?")?;
- let row = stmt.query_row([password], |row| {
- let row = user_from_row(row, hide_password)?;
- Ok(row)
- }).optional()?;
+ let row = stmt
+ .query_row([password], |row| {
+ let row = user_from_row(row, hide_password)?;
+ Ok(row)
+ })
+ .optional()?;
Ok(row)
}
@@ -93,13 +120,32 @@ pub fn get_user_page(page: u64, hide_password: bool) -> Result<Vec<User>, rusqli
#[instrument()]
pub fn add_user(request: RegistrationRequet) -> Result<User, rusqlite::Error> {
tracing::trace!("Adding new user");
- let date = u64::try_from(SystemTime::now().duration_since(UNIX_EPOCH).unwrap_or(Duration::ZERO).as_millis()).unwrap_or(0);
+ let date = u64::try_from(
+ SystemTime::now()
+ .duration_since(UNIX_EPOCH)
+ .unwrap_or(Duration::ZERO)
+ .as_millis(),
+ )
+ .unwrap_or(0);
let conn = database::connect()?;
let mut stmt = conn.prepare("INSERT INTO users (firstname, lastname, email, password, gender, date, day, month, year) VALUES(?,?,?,?,?,?,?,?,?) RETURNING *;")?;
- let user = stmt.query_row((request.firstname, request.lastname, request.email, request.password, request.gender, date, request.day, request.month, request.year), |row| {
- let row = user_from_row(row, false)?;
- Ok(row)
- })?;
+ let user = stmt.query_row(
+ (
+ request.firstname,
+ request.lastname,
+ request.email,
+ request.password,
+ request.gender,
+ date,
+ request.day,
+ request.month,
+ request.year,
+ ),
+ |row| {
+ let row = user_from_row(row, false)?;
+ Ok(row)
+ },
+ )?;
Ok(user)
-} \ No newline at end of file
+}