summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorDessalines <tyhou13@gmx.com>2019-08-21 22:17:15 -0700
committerDessalines <tyhou13@gmx.com>2019-08-21 22:17:15 -0700
commitb7e73a5559d05a8d06ef2e01f7382a90bb50f44f (patch)
treea12dfa7ed899170e022ec98f3b7f66675de0d9b2 /server
parent512cde82ef4950bb0990adfea4f8b9657a2fe356 (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.rs1
-rw-r--r--server/src/api/site.rs20
-rw-r--r--server/src/api/user.rs2
-rw-r--r--server/src/db/mod.rs2
-rw-r--r--server/src/db/post_view.rs56
-rw-r--r--server/src/websocket/server.rs1
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,