summaryrefslogtreecommitdiffstats
path: root/server/src/api/site.rs
diff options
context:
space:
mode:
authorDessalines <happydooby@gmail.com>2019-08-10 10:32:06 -0700
committerDessalines <happydooby@gmail.com>2019-08-10 10:32:06 -0700
commit30f5f97f2fd9703c5a197bd08842de01fe7eb93b (patch)
treedc90721fbad5ce88781db9f091497f508950cc7e /server/src/api/site.rs
parent5ced2cdb4fa6f33f064631f9519025e329b61422 (diff)
Adding support for community and user searching.
- Fixes #130
Diffstat (limited to 'server/src/api/site.rs')
-rw-r--r--server/src/api/site.rs122
1 files changed, 81 insertions, 41 deletions
diff --git a/server/src/api/site.rs b/server/src/api/site.rs
index 08fefae4..09af742f 100644
--- a/server/src/api/site.rs
+++ b/server/src/api/site.rs
@@ -25,6 +25,8 @@ pub struct SearchResponse {
op: String,
comments: Vec<CommentView>,
posts: Vec<PostView>,
+ communities: Vec<CommunityView>,
+ users: Vec<UserView>,
}
#[derive(Serialize, Deserialize)]
@@ -272,53 +274,89 @@ impl Perform<SearchResponse> for Oper<Search> {
let mut posts = Vec::new();
let mut comments = Vec::new();
+ let mut communities = Vec::new();
+ let mut users = Vec::new();
match type_ {
SearchType::Posts => {
- posts = PostView::list(&conn,
- PostListingType::All,
- &sort,
- data.community_id,
- None,
- Some(data.q.to_owned()),
- None,
- false,
- false,
- data.page,
- data.limit)?;
+ posts = PostView::list(
+ &conn,
+ PostListingType::All,
+ &sort,
+ data.community_id,
+ None,
+ Some(data.q.to_owned()),
+ None,
+ false,
+ false,
+ data.page,
+ data.limit)?;
},
SearchType::Comments => {
- comments = CommentView::list(&conn,
- &sort,
- None,
- None,
- Some(data.q.to_owned()),
- None,
- false,
- data.page,
- data.limit)?;
+ comments = CommentView::list(
+ &conn,
+ &sort,
+ None,
+ None,
+ Some(data.q.to_owned()),
+ None,
+ false,
+ data.page,
+ data.limit)?;
+ },
+ SearchType::Communities => {
+ communities = CommunityView::list(
+ &conn,
+ &sort,
+ None,
+ Some(data.q.to_owned()),
+ data.page,
+ data.limit)?;
+ },
+ SearchType::Users => {
+ users = UserView::list(
+ &conn,
+ &sort,
+ Some(data.q.to_owned()),
+ data.page,
+ data.limit)?;
},
- SearchType::Both => {
- posts = PostView::list(&conn,
- PostListingType::All,
- &sort,
- data.community_id,
- None,
- Some(data.q.to_owned()),
- None,
- false,
- false,
- data.page,
- data.limit)?;
- comments = CommentView::list(&conn,
- &sort,
- None,
- None,
- Some(data.q.to_owned()),
- None,
- false,
- data.page,
- data.limit)?;
+ SearchType::All => {
+ posts = PostView::list(
+ &conn,
+ PostListingType::All,
+ &sort,
+ data.community_id,
+ None,
+ Some(data.q.to_owned()),
+ None,
+ false,
+ false,
+ data.page,
+ data.limit)?;
+ comments = CommentView::list(
+ &conn,
+ &sort,
+ None,
+ None,
+ Some(data.q.to_owned()),
+ None,
+ false,
+ data.page,
+ data.limit)?;
+ communities = CommunityView::list(
+ &conn,
+ &sort,
+ None,
+ Some(data.q.to_owned()),
+ data.page,
+ data.limit)?;
+ users = UserView::list(
+ &conn,
+ &sort,
+ Some(data.q.to_owned()),
+ data.page,
+ data.limit)?;
}
};
@@ -329,6 +367,8 @@ impl Perform<SearchResponse> for Oper<Search> {
op: self.op.to_string(),
comments: comments,
posts: posts,
+ communities: communities,
+ users: users,
}
)
}