import type {
TmdbPersonCreditCast ,
TmdbPersonCreditCrew ,
TmdbPersonDetails ,
} from '@server/api/themoviedb/interfaces' ;
import type Media from '@server/entity/Media' ;
export interface PersonDetails {
id : number ;
name : string ;
birthday : string ;
deathday : string ;
knownForDepartment : string ;
alsoKnownAs? : string [ ] ;
gender : number ;
biography : string ;
popularity : number ;
placeOfBirth? : string ;
profilePath? : string ;
adult : boolean ;
imdbId? : string ;
homepage? : string ;
}
export interface PersonCredit {
id : number ;
originalLanguage : string ;
episodeCount : number ;
overview : string ;
originCountry : string [ ] ;
originalName : string ;
voteCount : number ;
name : string ;
mediaType? : string ;
popularity : number ;
creditId : string ;
backdropPath? : string ;
firstAirDate : string ;
voteAverage : number ;
genreIds? : number [ ] ;
posterPath? : string ;
originalTitle : string ;
video? : boolean ;
title : string ;
adult : boolean ;
releaseDate : string ;
mediaInfo? : Media ;
}
export interface PersonCreditCast extends PersonCredit {
character : string ;
}
export interface PersonCreditCrew extends PersonCredit {
department : string ;
job : string ;
}
export interface CombinedCredit {
id : number ;
cast : PersonCreditCast [ ] ;
crew : PersonCreditCrew [ ] ;
}
export const mapPersonDetails = ( person : TmdbPersonDetails ) : PersonDetails = > ( {
id : person.id ,
name : person.name ,
birthday : person.birthday ,
deathday : person.deathday ,
knownForDepartment : person.known_for_department ,
alsoKnownAs : person.also_known_as ,
gender : person.gender ,
biography : person.biography ,
popularity : person.popularity ,
placeOfBirth : person.place_of_birth ,
profilePath : person.profile_path ,
adult : person.adult ,
imdbId : person.imdb_id ,
homepage : person.homepage ,
} ) ;
export const mapCastCredits = (
cast : TmdbPersonCreditCast ,
media? : Media
) : PersonCreditCast = > ( {
id : cast.id ,
originalLanguage : cast.original_language ,
episodeCount : cast.episode_count ,
overview : cast.overview ,
originCountry : cast.origin_country ,
originalName : cast.original_name ,
voteCount : cast.vote_count ,
name : cast.name ,
mediaType : cast.media_type ,
popularity : cast.popularity ,
creditId : cast.credit_id ,
backdropPath : cast.backdrop_path ,
firstAirDate : cast.first_air_date ,
voteAverage : cast.vote_average ,
genreIds : cast.genre_ids ,
posterPath : cast.poster_path ,
originalTitle : cast.original_title ,
video : cast.video ,
title : cast.title ,
adult : cast.adult ,
releaseDate : cast.release_date ,
character : cast.character ,
mediaInfo : media ,
} ) ;
export const mapCrewCredits = (
crew : TmdbPersonCreditCrew ,
media? : Media
) : PersonCreditCrew = > ( {
id : crew.id ,
originalLanguage : crew.original_language ,
episodeCount : crew.episode_count ,
overview : crew.overview ,
originCountry : crew.origin_country ,
originalName : crew.original_name ,
voteCount : crew.vote_count ,
name : crew.name ,
mediaType : crew.media_type ,
popularity : crew.popularity ,
creditId : crew.credit_id ,
backdropPath : crew.backdrop_path ,
firstAirDate : crew.first_air_date ,
voteAverage : crew.vote_average ,
genreIds : crew.genre_ids ,
posterPath : crew.poster_path ,
originalTitle : crew.original_title ,
video : crew.video ,
title : crew.title ,
adult : crew.adult ,
releaseDate : crew.release_date ,
department : crew.department ,
job : crew.job ,
mediaInfo : media ,
} ) ;