From 57d30c1845def4e7d7b22df5b498f1c5bd178243 Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Wed, 15 Feb 2023 13:32:43 -0500 Subject: followers and following tabs --- src/database/friends.rs | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'src/database/friends.rs') diff --git a/src/database/friends.rs b/src/database/friends.rs index 31434d4..7e23616 100644 --- a/src/database/friends.rs +++ b/src/database/friends.rs @@ -74,6 +74,50 @@ impl Database { Ok(row.into_iter().flatten().collect()) } + #[instrument(skip(self))] + pub fn get_followers(&self, user_id: u64) -> Result, rusqlite::Error> { + tracing::trace!("Retrieving friends"); + let mut stmt = self.0.prepare( + " + SELECT * + FROM users u + WHERE EXISTS ( + SELECT NULL + FROM friends f + WHERE f.follower_id = ? + AND u.user_id = f.followee_id + ) + ", + )?; + let row = stmt.query_map([user_id], |row| { + let row = Self::user_from_row(row, true)?; + Ok(row) + })?; + Ok(row.into_iter().flatten().collect()) + } + + #[instrument(skip(self))] + pub fn get_following(&self, user_id: u64) -> Result, rusqlite::Error> { + tracing::trace!("Retrieving friends"); + let mut stmt = self.0.prepare( + " + SELECT * + FROM users u + WHERE EXISTS ( + SELECT NULL + FROM friends f + WHERE u.user_id = f.follower_id + AND f.followee_id = ? + ) + ", + )?; + let row = stmt.query_map([user_id], |row| { + let row = Self::user_from_row(row, true)?; + Ok(row) + })?; + Ok(row.into_iter().flatten().collect()) + } + #[instrument(skip(self))] pub fn set_following(&self, user_id_1: u64, user_id_2: u64) -> Result { tracing::trace!("Setting following"); -- cgit v1.2.3-freya