diff --git a/src/dto_helpers.rs b/src/dto_helpers.rs index ca55297c38e666f08cdd3b601b8c594cc6fca115..43090bb15660d4d143c4d95473a772e43034c35d 100644 --- a/src/dto_helpers.rs +++ b/src/dto_helpers.rs @@ -32,7 +32,7 @@ pub fn load_title(db: &PgConnection, config: &Config, title: Title) -> QueryResu title, title_names, title_descriptions, title_cast, title_genres, title_ratings, title_images, title_media, title_subtitles, - title_preview, + Some(title_preview), )) } @@ -63,8 +63,12 @@ pub fn load_titles(db: &PgConnection, config: &Config, titles: Vec<Title>) -> Qu let title_subtitles: Vec<Vec<TitleSubtitle>> = TitleSubtitle::belonging_to(&titles) .load::<TitleSubtitle>(db)? .grouped_by(&titles); - let title_preview: Vec<TitlePreview> = TitlePreview::belonging_to(&titles) - .load::<TitlePreview>(db)?; + let title_preview: Vec<Option<TitlePreview>> = TitlePreview::belonging_to(&titles) + .load::<TitlePreview>(db)? + .grouped_by(&titles) + .into_iter() + .map(|vec: Vec<TitlePreview>| vec.into_iter().next()) + .collect::<Vec<_>>(); Ok(titles.into_iter() .zip(title_names) .zip(title_descriptions) @@ -94,7 +98,7 @@ fn process_title( title: Title, names: Vec<TitleName>, descriptions: Vec<TitleDescription>, cast: Vec<(TitleCast, Person)>, genres: Vec<(TitleGenre, Genre)>, ratings: Vec<TitleRating>, images: Vec<TitleImage>, media: Vec<TitleMedium>, subtitles: Vec<TitleSubtitle>, - preview: TitlePreview, + preview: Option<TitlePreview>, ) -> TitleDto { TitleDto::of( title, @@ -123,7 +127,9 @@ fn process_title( subtitles.into_iter().filter_map(|src| { SubtitleDto::of(src, &config).ok() }).collect::<Vec<_>>(), - preview.src.and_then(|preview| absolute_url(config, preview).ok()) + preview + .and_then(|preview| preview.src) + .and_then(|preview| absolute_url(config, preview).ok()) ) }