summaryrefslogtreecommitdiff
path: root/src/database
diff options
context:
space:
mode:
Diffstat (limited to 'src/database')
-rw-r--r--src/database/mod.rs9
-rw-r--r--src/database/posts.rs12
-rw-r--r--src/database/sessions.rs14
-rw-r--r--src/database/users.rs12
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(