Files
movies-diary/crates/application/src/use_cases/get_diary.rs
2026-05-04 01:19:59 +02:00

30 lines
727 B
Rust

use domain::{
errors::DomainError,
models::{
DiaryEntry, DiaryFilter, SortDirection,
collections::{PageParams, Paginated},
},
value_objects::MovieId,
};
use crate::{context::AppContext, queries::GetDiaryQuery};
pub async fn execute(
ctx: &AppContext,
query: GetDiaryQuery,
) -> Result<Paginated<DiaryEntry>, DomainError> {
let page = PageParams::new(query.limit, query.offset)?;
let movie_id = query.movie_id.map(MovieId::from_uuid);
let filter = DiaryFilter {
sort_by: query.sort_by.unwrap_or(SortDirection::Descending),
page,
movie_id,
};
let paginated_results = ctx.repository.query_diary(&filter).await?;
Ok(paginated_results)
}