refactor(application): remove pass-through search use cases — call SearchPort directly
This commit is contained in:
@@ -4,6 +4,5 @@ pub mod federation_management;
|
|||||||
pub mod feed;
|
pub mod feed;
|
||||||
pub mod notifications;
|
pub mod notifications;
|
||||||
pub mod profile;
|
pub mod profile;
|
||||||
pub mod search;
|
|
||||||
pub mod social;
|
pub mod social;
|
||||||
pub mod thoughts;
|
pub mod thoughts;
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
use domain::{
|
|
||||||
errors::DomainError,
|
|
||||||
models::{
|
|
||||||
feed::{FeedEntry, PageParams, Paginated},
|
|
||||||
user::User,
|
|
||||||
},
|
|
||||||
ports::SearchPort,
|
|
||||||
value_objects::UserId,
|
|
||||||
};
|
|
||||||
|
|
||||||
pub async fn search_thoughts(
|
|
||||||
search: &dyn SearchPort,
|
|
||||||
query: &str,
|
|
||||||
page: PageParams,
|
|
||||||
viewer_id: Option<&UserId>,
|
|
||||||
) -> Result<Paginated<FeedEntry>, DomainError> {
|
|
||||||
search.search_thoughts(query, &page, viewer_id).await
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn search_users(
|
|
||||||
search: &dyn SearchPort,
|
|
||||||
query: &str,
|
|
||||||
page: PageParams,
|
|
||||||
) -> Result<Paginated<User>, DomainError> {
|
|
||||||
search.search_users(query, &page).await
|
|
||||||
}
|
|
||||||
@@ -11,7 +11,6 @@ use application::use_cases::feed::{
|
|||||||
get_popular_tags as uc_get_popular_tags, get_public_feed, get_user_feed,
|
get_popular_tags as uc_get_popular_tags, get_public_feed, get_user_feed,
|
||||||
};
|
};
|
||||||
use application::use_cases::profile::{get_user_by_id_or_username, get_user_by_username};
|
use application::use_cases::profile::{get_user_by_id_or_username, get_user_by_username};
|
||||||
use application::use_cases::search::{search_thoughts, search_users};
|
|
||||||
use axum::{
|
use axum::{
|
||||||
extract::{Path, Query, State},
|
extract::{Path, Query, State},
|
||||||
http::{header, HeaderMap},
|
http::{header, HeaderMap},
|
||||||
@@ -104,22 +103,14 @@ pub async fn search_handler(
|
|||||||
let query = q.q.trim().to_string();
|
let query = q.q.trim().to_string();
|
||||||
|
|
||||||
let (thoughts_result, users_result) = tokio::join!(
|
let (thoughts_result, users_result) = tokio::join!(
|
||||||
search_thoughts(
|
s.search.search_thoughts(
|
||||||
&*s.search,
|
|
||||||
&query,
|
&query,
|
||||||
PageParams {
|
&page,
|
||||||
page: page.page,
|
|
||||||
per_page: page.per_page
|
|
||||||
},
|
|
||||||
viewer.as_ref()
|
viewer.as_ref()
|
||||||
),
|
),
|
||||||
search_users(
|
s.search.search_users(
|
||||||
&*s.search,
|
|
||||||
&query,
|
&query,
|
||||||
PageParams {
|
&page
|
||||||
page: page.page,
|
|
||||||
per_page: page.per_page
|
|
||||||
}
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ use application::use_cases::feed::list_users_paginated;
|
|||||||
use application::use_cases::profile::{
|
use application::use_cases::profile::{
|
||||||
get_user as fetch_user, get_user_by_id_or_username, update_profile,
|
get_user as fetch_user, get_user_by_id_or_username, update_profile,
|
||||||
};
|
};
|
||||||
use application::use_cases::search::search_users;
|
|
||||||
use axum::{
|
use axum::{
|
||||||
extract::{Path, Query, State},
|
extract::{Path, Query, State},
|
||||||
http::{header, HeaderMap},
|
http::{header, HeaderMap},
|
||||||
@@ -135,7 +134,7 @@ pub async fn get_users(
|
|||||||
let page_params = PageParams { page, per_page };
|
let page_params = PageParams { page, per_page };
|
||||||
|
|
||||||
if let Some(q) = params.get("q").filter(|q| !q.trim().is_empty()) {
|
if let Some(q) = params.get("q").filter(|q| !q.trim().is_empty()) {
|
||||||
let result = search_users(&*s.search, q, page_params).await?;
|
let result = s.search.search_users(q, &page_params).await?;
|
||||||
let users: Vec<_> = result
|
let users: Vec<_> = result
|
||||||
.items
|
.items
|
||||||
.iter()
|
.iter()
|
||||||
|
|||||||
Reference in New Issue
Block a user