import { TmdbMovieDetails } from '../api/themoviedb'; import { MediaRequest } from '../entity/MediaRequest'; import { ProductionCompany, Genre } from './common'; export interface MovieDetails { id: number; imdbId?: string; adult: boolean; backdropPath?: string; budget: number; genres: Genre[]; homepage?: string; originalLanguage: string; originalTitle: string; overview?: string; popularity: number; posterPath?: string; productionCompanies: ProductionCompany[]; productionCountries: { iso_3166_1: string; name: string; }[]; releaseDate: string; revenue: number; runtime?: number; spokenLanguages: { iso_639_1: string; name: string; }[]; status: string; tagline?: string; title: string; video: boolean; voteAverage: number; voteCount: number; request?: MediaRequest; } export const mapMovieDetails = ( movie: TmdbMovieDetails, request?: MediaRequest ): MovieDetails => ({ id: movie.id, adult: movie.adult, budget: movie.budget, genres: movie.genres, originalLanguage: movie.original_language, originalTitle: movie.original_title, popularity: movie.popularity, productionCompanies: movie.production_companies.map((company) => ({ id: company.id, logoPath: company.logo_path, originCountry: company.origin_country, name: company.name, })), productionCountries: movie.production_countries, releaseDate: movie.release_date, revenue: movie.revenue, spokenLanguages: movie.spoken_languages, status: movie.status, title: movie.title, video: movie.video, voteAverage: movie.vote_average, voteCount: movie.vote_count, backdropPath: movie.backdrop_path, homepage: movie.homepage, imdbId: movie.imdb_id, overview: movie.overview, posterPath: movie.poster_path, runtime: movie.runtime, tagline: movie.tagline, request, });