diff options
Diffstat (limited to 'src/database')
-rw-r--r-- | src/database/mod.rs | 9 | ||||
-rw-r--r-- | src/database/posts.rs | 12 | ||||
-rw-r--r-- | src/database/sessions.rs | 14 | ||||
-rw-r--r-- | src/database/users.rs | 12 |
4 files changed, 47 insertions, 0 deletions
diff --git a/src/database/mod.rs b/src/database/mod.rs index d48f352..b24c1e1 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -1,3 +1,5 @@ +use tracing::instrument; + pub mod posts; pub mod sessions; pub mod users; @@ -12,3 +14,10 @@ pub fn init() -> Result<(), rusqlite::Error> { sessions::init()?; Ok(()) } + +#[instrument()] +pub fn query(query: String) -> Result<usize, rusqlite::Error> { + tracing::trace!("Running custom query"); + let conn = connect()?; + conn.execute(&query, []) +}
\ No newline at end of file diff --git a/src/database/posts.rs b/src/database/posts.rs index 58470f0..3f2fc58 100644 --- a/src/database/posts.rs +++ b/src/database/posts.rs @@ -78,6 +78,18 @@ pub fn get_post_page(page: u64) -> Result<Vec<Post>, rusqlite::Error> { } #[instrument()] +pub fn get_all_posts() -> Result<Vec<Post>, rusqlite::Error> { + tracing::trace!("Retrieving posts page"); + let conn = database::connect()?; + let mut stmt = conn.prepare("SELECT * FROM posts ORDER BY post_id")?; + let row = stmt.query_map([], |row| { + let row = post_from_row(row)?; + Ok(row) + })?; + Ok(row.into_iter().flatten().collect()) +} + +#[instrument()] pub fn get_users_posts(user_id: u64) -> Result<Vec<Post>, rusqlite::Error> { tracing::trace!("Retrieving users posts"); let conn = database::connect()?; diff --git a/src/database/sessions.rs b/src/database/sessions.rs index 8d4ca73..9adccd4 100644 --- a/src/database/sessions.rs +++ b/src/database/sessions.rs @@ -33,6 +33,20 @@ pub fn get_session(token: &str) -> Result<Option<Session>, rusqlite::Error> { } #[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()) +} + +#[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()?; diff --git a/src/database/users.rs b/src/database/users.rs index 05a3a57..7f8e407 100644 --- a/src/database/users.rs +++ b/src/database/users.rs @@ -118,6 +118,18 @@ pub fn get_user_page(page: u64, hide_password: bool) -> Result<Vec<User>, rusqli } #[instrument()] +pub fn get_all_users() -> Result<Vec<User>, rusqlite::Error> { + tracing::trace!("Retrieving user page"); + let conn = database::connect()?; + let mut stmt = conn.prepare("SELECT * FROM users ORDER BY user_id")?; + let row = stmt.query_map([], |row| { + let row = user_from_row(row, false)?; + Ok(row) + })?; + Ok(row.into_iter().flatten().collect()) +} + +#[instrument()] pub fn add_user(request: RegistrationRequet) -> Result<User, rusqlite::Error> { tracing::trace!("Adding new user"); let date = u64::try_from( |