diff options
author | Dessalines <tyhou13@gmx.com> | 2019-08-21 22:17:15 -0700 |
---|---|---|
committer | Dessalines <tyhou13@gmx.com> | 2019-08-21 22:17:15 -0700 |
commit | b7e73a5559d05a8d06ef2e01f7382a90bb50f44f (patch) | |
tree | a12dfa7ed899170e022ec98f3b7f66675de0d9b2 /server | |
parent | 512cde82ef4950bb0990adfea4f8b9657a2fe356 (diff) |
View where a URL has been cross-posted to in the past
- This shows when creating a post, or when viewing a post.
- Fixes #131
Diffstat (limited to 'server')
-rw-r--r-- | server/src/api/post.rs | 1 | ||||
-rw-r--r-- | server/src/api/site.rs | 20 | ||||
-rw-r--r-- | server/src/api/user.rs | 2 | ||||
-rw-r--r-- | server/src/db/mod.rs | 2 | ||||
-rw-r--r-- | server/src/db/post_view.rs | 56 | ||||
-rw-r--r-- | server/src/websocket/server.rs | 1 |
6 files changed, 58 insertions, 24 deletions
diff --git a/server/src/api/post.rs b/server/src/api/post.rs index 35363a17..c5985f46 100644 --- a/server/src/api/post.rs +++ b/server/src/api/post.rs @@ -254,6 +254,7 @@ impl Perform<GetPostsResponse> for Oper<GetPosts> { data.community_id, None, None, + None, user_id, show_nsfw, false, diff --git a/server/src/api/site.rs b/server/src/api/site.rs index 8f094aac..c98539be 100644 --- a/server/src/api/site.rs +++ b/server/src/api/site.rs @@ -23,6 +23,7 @@ pub struct Search { #[derive(Serialize, Deserialize)] pub struct SearchResponse { op: String, + type_: String, comments: Vec<CommentView>, posts: Vec<PostView>, communities: Vec<CommunityView>, @@ -288,6 +289,7 @@ impl Perform<SearchResponse> for Oper<Search> { data.community_id, None, Some(data.q.to_owned()), + None, None, true, false, @@ -333,6 +335,7 @@ impl Perform<SearchResponse> for Oper<Search> { data.community_id, None, Some(data.q.to_owned()), + None, None, true, false, @@ -363,6 +366,22 @@ impl Perform<SearchResponse> for Oper<Search> { Some(data.q.to_owned()), data.page, data.limit)?; + }, + SearchType::Url => { + posts = PostView::list( + &conn, + PostListingType::All, + &sort, + data.community_id, + None, + None, + Some(data.q.to_owned()), + None, + true, + false, + false, + data.page, + data.limit)?; } }; @@ -371,6 +390,7 @@ impl Perform<SearchResponse> for Oper<Search> { Ok( SearchResponse { op: self.op.to_string(), + type_: data.type_.to_owned(), comments: comments, posts: posts, communities: communities, diff --git a/server/src/api/user.rs b/server/src/api/user.rs index 672eca56..425cc1cb 100644 --- a/server/src/api/user.rs +++ b/server/src/api/user.rs @@ -318,6 +318,7 @@ impl Perform<GetUserDetailsResponse> for Oper<GetUserDetails> { data.community_id, None, None, + None, Some(user_details_id), show_nsfw, data.saved_only, @@ -332,6 +333,7 @@ impl Perform<GetUserDetailsResponse> for Oper<GetUserDetails> { data.community_id, Some(user_details_id), None, + None, user_id, show_nsfw, data.saved_only, diff --git a/server/src/db/mod.rs b/server/src/db/mod.rs index 9f0c79b8..3de0abb4 100644 --- a/server/src/db/mod.rs +++ b/server/src/db/mod.rs @@ -67,7 +67,7 @@ pub enum SortType { #[derive(EnumString,ToString,Debug, Serialize, Deserialize)] pub enum SearchType { - All, Comments, Posts, Communities, Users + All, Comments, Posts, Communities, Users, Url } pub fn fuzzy_search(q: &str) -> String { diff --git a/server/src/db/post_view.rs b/server/src/db/post_view.rs index c7e6eea3..c9d8cff7 100644 --- a/server/src/db/post_view.rs +++ b/server/src/db/post_view.rs @@ -79,6 +79,7 @@ impl PostView { for_community_id: Option<i32>, for_creator_id: Option<i32>, search_term: Option<String>, + url_search: Option<String>, my_user_id: Option<i32>, show_nsfw: bool, saved_only: bool, @@ -104,6 +105,10 @@ impl PostView { query = query.filter(name.ilike(fuzzy_search(&search_term))); }; + if let Some(url_search) = url_search { + query = query.filter(url.eq(url_search)); + }; + // TODO these are wrong, bc they'll only show saved for your logged in user, not theirs if saved_only { query = query.filter(saved.eq(true)); @@ -326,29 +331,34 @@ mod tests { }; - let read_post_listings_with_user = PostView::list(&conn, - PostListingType::Community, - &SortType::New, Some(inserted_community.id), - None, - None, - Some(inserted_user.id), - false, - false, - false, - None, - None).unwrap(); - let read_post_listings_no_user = PostView::list(&conn, - PostListingType::Community, - &SortType::New, - Some(inserted_community.id), - None, - None, - None, - false, - false, - false, - None, - None).unwrap(); + let read_post_listings_with_user = PostView::list( + &conn, + PostListingType::Community, + &SortType::New, + Some(inserted_community.id), + None, + None, + None, + Some(inserted_user.id), + false, + false, + false, + None, + None).unwrap(); + let read_post_listings_no_user = PostView::list( + &conn, + PostListingType::Community, + &SortType::New, + Some(inserted_community.id), + None, + None, + None, + None, + false, + false, + false, + None, + None).unwrap(); let read_post_listing_no_user = PostView::read(&conn, inserted_post.id, None).unwrap(); let read_post_listing_with_user = PostView::read(&conn, inserted_post.id, Some(inserted_user.id)).unwrap(); diff --git a/server/src/websocket/server.rs b/server/src/websocket/server.rs index 64f94f4c..c0dee267 100644 --- a/server/src/websocket/server.rs +++ b/server/src/websocket/server.rs @@ -142,6 +142,7 @@ impl ChatServer { None, None, None, + None, false, false, false, |