refactor(search): scoped Arc dep instead of AppContext
This commit is contained in:
@@ -1,11 +1,15 @@
|
|||||||
use crate::context::AppContext;
|
use std::sync::Arc;
|
||||||
use domain::{
|
use domain::{
|
||||||
errors::DomainError,
|
errors::DomainError,
|
||||||
models::{SearchQuery, SearchResults},
|
models::{SearchQuery, SearchResults},
|
||||||
|
ports::SearchPort,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub async fn execute(ctx: &AppContext, query: SearchQuery) -> Result<SearchResults, DomainError> {
|
pub async fn execute(
|
||||||
ctx.repos.search_port.search(&query).await
|
search_port: Arc<dyn SearchPort>,
|
||||||
|
query: SearchQuery,
|
||||||
|
) -> Result<SearchResults, DomainError> {
|
||||||
|
search_port.search(&query).await
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ use crate::test_helpers::TestContextBuilder;
|
|||||||
async fn returns_empty_results() {
|
async fn returns_empty_results() {
|
||||||
let ctx = TestContextBuilder::new().build();
|
let ctx = TestContextBuilder::new().build();
|
||||||
|
|
||||||
let result = execute::execute(&ctx, SearchQuery::default())
|
let result = execute::execute(ctx.repos.search_port.clone(), SearchQuery::default())
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ pub async fn get_search(
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
match search_uc::execute(&state.app_ctx, query).await {
|
match search_uc::execute(state.app_ctx.repos.search_port.clone(), query).await {
|
||||||
Ok(results) => axum::Json(SearchResponse {
|
Ok(results) => axum::Json(SearchResponse {
|
||||||
movies: PaginatedMovieHits {
|
movies: PaginatedMovieHits {
|
||||||
items: results
|
items: results
|
||||||
|
|||||||
Reference in New Issue
Block a user