refactor(diary): DeleteReviewDeps, GetMovieSocialPageDeps, GetActivityFeedDeps
This commit is contained in:
@@ -11,6 +11,7 @@ use application::diary::{
|
||||
delete_review, export_diary as export_diary_uc, get_activity_feed as get_feed_uc, get_diary,
|
||||
log_review,
|
||||
queries::{ExportQuery, GetActivityFeedQuery},
|
||||
deps::{DeleteReviewDeps, GetActivityFeedDeps},
|
||||
};
|
||||
use domain::models::ExportFormat;
|
||||
|
||||
@@ -50,7 +51,7 @@ pub async fn get_diary(
|
||||
State(state): State<AppState>,
|
||||
Query(params): Query<DiaryQueryParams>,
|
||||
) -> Result<Json<DiaryResponse>, ApiError> {
|
||||
let page = get_diary::execute(&state.app_ctx, to_diary_query(params)).await?;
|
||||
let page = get_diary::execute(&state.app_ctx.repos.diary, to_diary_query(params)).await?;
|
||||
|
||||
Ok(Json(DiaryResponse {
|
||||
items: page
|
||||
@@ -80,7 +81,7 @@ pub async fn post_review(
|
||||
Json(req): Json<LogReviewRequest>,
|
||||
) -> Result<impl IntoResponse, ApiError> {
|
||||
let data = LogReviewData::try_from(req).map_err(ApiError)?;
|
||||
log_review::execute(&state.app_ctx, data.into_command(user.0.value())).await?;
|
||||
log_review::execute(&state.app_ctx.services.review_logger, data.into_command(user.0.value())).await?;
|
||||
Ok(StatusCode::CREATED)
|
||||
}
|
||||
|
||||
@@ -104,7 +105,13 @@ pub async fn delete_review(
|
||||
review_id,
|
||||
requesting_user_id: user_id.value(),
|
||||
};
|
||||
delete_review::execute(&state.app_ctx, cmd).await?;
|
||||
let deps = DeleteReviewDeps {
|
||||
review: state.app_ctx.repos.review.clone(),
|
||||
diary: state.app_ctx.repos.diary.clone(),
|
||||
movie: state.app_ctx.repos.movie.clone(),
|
||||
event_publisher: state.app_ctx.services.event_publisher.clone(),
|
||||
};
|
||||
delete_review::execute(&deps, cmd).await?;
|
||||
Ok(StatusCode::NO_CONTENT)
|
||||
}
|
||||
|
||||
@@ -136,7 +143,13 @@ pub async fn export_diary(
|
||||
user_id: user.0.value(),
|
||||
format,
|
||||
};
|
||||
match export_diary_uc::execute(&state.app_ctx, query).await {
|
||||
match export_diary_uc::execute(
|
||||
&state.app_ctx.repos.diary,
|
||||
&state.app_ctx.services.diary_exporter,
|
||||
query,
|
||||
)
|
||||
.await
|
||||
{
|
||||
Ok(bytes) => (
|
||||
StatusCode::OK,
|
||||
[
|
||||
@@ -165,8 +178,13 @@ pub async fn get_activity_feed(
|
||||
State(state): State<AppState>,
|
||||
Query(params): Query<ActivityFeedQueryParams>,
|
||||
) -> Result<Json<ActivityFeedResponse>, ApiError> {
|
||||
let deps = GetActivityFeedDeps {
|
||||
diary: state.app_ctx.repos.diary.clone(),
|
||||
social_query: state.app_ctx.repos.social_query.clone(),
|
||||
config: state.app_ctx.config.clone(),
|
||||
};
|
||||
let page = get_feed_uc::execute(
|
||||
&state.app_ctx,
|
||||
&deps,
|
||||
GetActivityFeedQuery {
|
||||
limit: params.limit.unwrap_or(20),
|
||||
offset: params.offset.unwrap_or(0),
|
||||
@@ -226,7 +244,7 @@ pub async fn post_review_html(
|
||||
}
|
||||
};
|
||||
|
||||
match log_review::execute(&state.app_ctx, data.into_command(user_id.value())).await {
|
||||
match log_review::execute(&state.app_ctx.services.review_logger, data.into_command(user_id.value())).await {
|
||||
Ok(_) => Redirect::to("/").into_response(),
|
||||
Err(e) => {
|
||||
let msg = encode_error(&e.to_string());
|
||||
@@ -249,7 +267,13 @@ pub async fn post_delete_review_html(
|
||||
review_id,
|
||||
requesting_user_id: user_id.value(),
|
||||
};
|
||||
match delete_review::execute(&state.app_ctx, cmd).await {
|
||||
let deps = DeleteReviewDeps {
|
||||
review: state.app_ctx.repos.review.clone(),
|
||||
diary: state.app_ctx.repos.diary.clone(),
|
||||
movie: state.app_ctx.repos.movie.clone(),
|
||||
event_publisher: state.app_ctx.services.event_publisher.clone(),
|
||||
};
|
||||
match delete_review::execute(&deps, cmd).await {
|
||||
Ok(()) => {
|
||||
let redirect_url = form
|
||||
.redirect_after
|
||||
@@ -281,7 +305,13 @@ pub async fn get_export_html(
|
||||
user_id: user_id.value(),
|
||||
format,
|
||||
};
|
||||
match export_diary_uc::execute(&state.app_ctx, query).await {
|
||||
match export_diary_uc::execute(
|
||||
&state.app_ctx.repos.diary,
|
||||
&state.app_ctx.services.diary_exporter,
|
||||
query,
|
||||
)
|
||||
.await
|
||||
{
|
||||
Ok(bytes) => (
|
||||
StatusCode::OK,
|
||||
[
|
||||
@@ -332,7 +362,13 @@ pub async fn get_activity_feed_html(
|
||||
filter_following,
|
||||
};
|
||||
|
||||
match application::diary::get_activity_feed::execute(&state.app_ctx, query).await {
|
||||
let deps = GetActivityFeedDeps {
|
||||
diary: state.app_ctx.repos.diary.clone(),
|
||||
social_query: state.app_ctx.repos.social_query.clone(),
|
||||
config: state.app_ctx.config.clone(),
|
||||
};
|
||||
|
||||
match application::diary::get_activity_feed::execute(&deps, query).await {
|
||||
Ok(entries) => {
|
||||
let entry_limit = entries.limit;
|
||||
let entry_offset = entries.offset;
|
||||
|
||||
@@ -9,6 +9,7 @@ use uuid::Uuid;
|
||||
use application::{
|
||||
diary::{
|
||||
commands::SyncPosterCommand,
|
||||
deps::{GetMovieSocialPageDeps},
|
||||
get_movie_social_page, get_review_history,
|
||||
queries::{GetMovieSocialPageQuery, GetReviewHistoryQuery},
|
||||
},
|
||||
@@ -88,7 +89,7 @@ pub async fn get_review_history(
|
||||
Path(movie_id): Path<Uuid>,
|
||||
) -> Result<Json<ReviewHistoryResponse>, ApiError> {
|
||||
let (history, trend) =
|
||||
get_review_history::execute(&state.app_ctx, GetReviewHistoryQuery { movie_id }).await?;
|
||||
get_review_history::execute(&state.app_ctx.repos.diary, GetReviewHistoryQuery { movie_id }).await?;
|
||||
|
||||
Ok(Json(ReviewHistoryResponse {
|
||||
movie: crate::mappers::movies::movie_to_dto(history.movie()),
|
||||
@@ -154,7 +155,11 @@ pub async fn get_movie_detail(
|
||||
let offset = params.offset.unwrap_or(0);
|
||||
|
||||
let result = get_movie_social_page::execute(
|
||||
&state.app_ctx,
|
||||
&GetMovieSocialPageDeps {
|
||||
movie: state.app_ctx.repos.movie.clone(),
|
||||
diary: state.app_ctx.repos.diary.clone(),
|
||||
movie_profile: state.app_ctx.repos.movie_profile.clone(),
|
||||
},
|
||||
GetMovieSocialPageQuery {
|
||||
movie_id,
|
||||
limit,
|
||||
@@ -288,7 +293,11 @@ pub async fn get_movie_detail_html(
|
||||
let offset = params.offset.unwrap_or(0);
|
||||
|
||||
match get_movie_social_page::execute(
|
||||
&state.app_ctx,
|
||||
&GetMovieSocialPageDeps {
|
||||
movie: state.app_ctx.repos.movie.clone(),
|
||||
diary: state.app_ctx.repos.diary.clone(),
|
||||
movie_profile: state.app_ctx.repos.movie_profile.clone(),
|
||||
},
|
||||
GetMovieSocialPageQuery {
|
||||
movie_id,
|
||||
limit,
|
||||
|
||||
@@ -18,7 +18,7 @@ pub async fn get_feed(State(state): State<AppState>) -> Result<impl IntoResponse
|
||||
movie_id: None,
|
||||
user_id: None,
|
||||
};
|
||||
let page = get_diary::execute(&state.app_ctx, query).await?;
|
||||
let page = get_diary::execute(&state.app_ctx.repos.diary, query).await?;
|
||||
let xml = state
|
||||
.rss_renderer
|
||||
.render_feed(&page.items, "Movie Diary")
|
||||
@@ -49,7 +49,7 @@ pub async fn get_user_feed(
|
||||
movie_id: None,
|
||||
user_id: Some(user_id),
|
||||
};
|
||||
let page = get_diary::execute(&state.app_ctx, query).await?;
|
||||
let page = get_diary::execute(&state.app_ctx.repos.diary, query).await?;
|
||||
|
||||
let display_name = user.email().value().split('@').next().unwrap_or("User");
|
||||
let title = format!("{}'s Movie Diary", display_name);
|
||||
|
||||
Reference in New Issue
Block a user