use domain::{errors::DomainError, models::GoalWithProgress, value_objects::UserId}; use super::{deps::GoalQueryDeps, queries::GetGoalQuery}; pub async fn execute( deps: &GoalQueryDeps, query: GetGoalQuery, ) -> Result, DomainError> { let user_id = UserId::from_uuid(query.user_id); let found = deps .goal_query .find_by_user_and_year(&user_id, query.year) .await?; let Some(g) = found else { return Ok(None) }; let current_count = deps .stats .count_reviews_in_year(&user_id, query.year) .await?; Ok(Some(GoalWithProgress { goal: g, current_count, })) } #[cfg(test)] #[path = "tests/get.rs"] mod tests;