mirror of
https://github.com/LemmyNet/lemmy.git
synced 2025-01-07 10:42:19 +00:00
Adding saved_only, liked_only, and disliked_only filters to search.
- Fixes #4547
This commit is contained in:
parent
5a722146b5
commit
601a0da9fd
2 changed files with 32 additions and 13 deletions
|
@ -79,6 +79,9 @@ pub struct Search {
|
||||||
pub page: Option<i64>,
|
pub page: Option<i64>,
|
||||||
pub limit: Option<i64>,
|
pub limit: Option<i64>,
|
||||||
pub post_title_only: Option<bool>,
|
pub post_title_only: Option<bool>,
|
||||||
|
pub saved_only: Option<bool>,
|
||||||
|
pub liked_only: Option<bool>,
|
||||||
|
pub disliked_only: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
|
|
|
@ -13,7 +13,10 @@ use lemmy_db_views::{
|
||||||
structs::{LocalUserView, SiteView},
|
structs::{LocalUserView, SiteView},
|
||||||
};
|
};
|
||||||
use lemmy_db_views_actor::{community_view::CommunityQuery, person_view::PersonQuery};
|
use lemmy_db_views_actor::{community_view::CommunityQuery, person_view::PersonQuery};
|
||||||
use lemmy_utils::error::LemmyResult;
|
use lemmy_utils::{
|
||||||
|
error::{LemmyError, LemmyResult},
|
||||||
|
LemmyErrorType,
|
||||||
|
};
|
||||||
|
|
||||||
#[tracing::instrument(skip(context))]
|
#[tracing::instrument(skip(context))]
|
||||||
pub async fn search(
|
pub async fn search(
|
||||||
|
@ -55,29 +58,42 @@ pub async fn search(
|
||||||
let creator_id = data.creator_id;
|
let creator_id = data.creator_id;
|
||||||
let local_user = local_user_view.as_ref().map(|l| &l.local_user);
|
let local_user = local_user_view.as_ref().map(|l| &l.local_user);
|
||||||
let post_title_only = data.post_title_only;
|
let post_title_only = data.post_title_only;
|
||||||
|
let saved_only = data.saved_only;
|
||||||
|
|
||||||
|
let liked_only = data.liked_only;
|
||||||
|
let disliked_only = data.disliked_only;
|
||||||
|
if liked_only.unwrap_or_default() && disliked_only.unwrap_or_default() {
|
||||||
|
return Err(LemmyError::from(LemmyErrorType::ContradictingFilters));
|
||||||
|
}
|
||||||
|
|
||||||
let posts_query = PostQuery {
|
let posts_query = PostQuery {
|
||||||
sort: (sort),
|
sort,
|
||||||
listing_type: (listing_type),
|
listing_type,
|
||||||
community_id: (community_id),
|
community_id,
|
||||||
creator_id: (creator_id),
|
creator_id,
|
||||||
local_user,
|
local_user,
|
||||||
search_term: (Some(q.clone())),
|
search_term: (Some(q.clone())),
|
||||||
page: (page),
|
page,
|
||||||
limit: (limit),
|
limit,
|
||||||
title_only: (post_title_only),
|
title_only: post_title_only,
|
||||||
|
liked_only,
|
||||||
|
disliked_only,
|
||||||
|
saved_only,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let comment_query = CommentQuery {
|
let comment_query = CommentQuery {
|
||||||
sort: (sort.map(post_to_comment_sort_type)),
|
sort: (sort.map(post_to_comment_sort_type)),
|
||||||
listing_type: (listing_type),
|
listing_type,
|
||||||
search_term: (Some(q.clone())),
|
search_term: (Some(q.clone())),
|
||||||
community_id: (community_id),
|
community_id,
|
||||||
creator_id: (creator_id),
|
creator_id,
|
||||||
local_user,
|
local_user,
|
||||||
page: (page),
|
page,
|
||||||
limit: (limit),
|
limit,
|
||||||
|
liked_only,
|
||||||
|
disliked_only,
|
||||||
|
saved_only,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue