mirror of
https://github.com/aleksilassila/reiverr.git
synced 2026-04-26 18:55:12 +02:00
feat: add catalogue tabs to library page
This commit is contained in:
@@ -1,89 +1,17 @@
|
||||
import { ApiProperty, PickType } from '@nestjs/swagger';
|
||||
import { MediaType } from 'src/common/common.dto';
|
||||
import { MovieMetadata, SeriesMetadata } from 'src/metadata/metadata.entity';
|
||||
import { TmdbMovie, TmdbSeries } from 'src/metadata/tmdb/tmdb.dto';
|
||||
import { TmdbItemDto } from 'src/metadata/tmdb/tmdb.dto';
|
||||
import { LibraryItem } from './library.entity';
|
||||
|
||||
class NextEpisodeToAir {
|
||||
@ApiProperty({ required: false })
|
||||
air_date?: string;
|
||||
}
|
||||
|
||||
class Season {
|
||||
@ApiProperty({ required: false })
|
||||
air_date?: string;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
episode_count?: number;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
id?: number;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
name?: string;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
overview?: string;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
poster_path?: string;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
season_number?: number;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
vote_average?: number;
|
||||
}
|
||||
|
||||
export class LibraryItemDto
|
||||
extends PickType(LibraryItem, [
|
||||
'tmdbId',
|
||||
'mediaType',
|
||||
'playStates',
|
||||
'createdAt',
|
||||
])
|
||||
implements TmdbMovie, TmdbSeries
|
||||
{
|
||||
// TmdbMovie & TmdbSeries
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
id?: number;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
poster_path?: string;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
vote_average?: number;
|
||||
|
||||
// TmdbMovie only
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
title?: string;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
release_date?: string;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
runtime?: number;
|
||||
|
||||
// TmdbSeries only
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
name?: string;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
first_air_date?: string;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
last_air_date?: string;
|
||||
|
||||
@ApiProperty({ required: false, type: NextEpisodeToAir })
|
||||
next_episode_to_air?: NextEpisodeToAir;
|
||||
|
||||
@ApiProperty({ required: false, isArray: true, type: Season })
|
||||
seasons?: Season[];
|
||||
|
||||
// Library Item
|
||||
export class LibraryItemDto extends PickType(LibraryItem, [
|
||||
'tmdbId',
|
||||
'mediaType',
|
||||
'playStates',
|
||||
'createdAt',
|
||||
]) {
|
||||
@ApiProperty()
|
||||
tmdbItem: TmdbItemDto;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
watched?: boolean;
|
||||
@@ -123,21 +51,23 @@ export class LibraryItemDto
|
||||
return {
|
||||
...libraryItem,
|
||||
watched,
|
||||
id: movieMetadata?.tmdbMovie.id ?? seriesMetadata?.tmdbSeries.id,
|
||||
poster_path:
|
||||
movieMetadata?.tmdbMovie.poster_path ??
|
||||
seriesMetadata?.tmdbSeries.poster_path,
|
||||
vote_average:
|
||||
movieMetadata?.tmdbMovie.vote_average ??
|
||||
seriesMetadata?.tmdbSeries.vote_average,
|
||||
title: movieMetadata?.tmdbMovie.title,
|
||||
release_date: movieMetadata?.tmdbMovie.release_date,
|
||||
runtime: movieMetadata?.tmdbMovie.runtime,
|
||||
name: seriesMetadata?.tmdbSeries.name,
|
||||
first_air_date: seriesMetadata?.tmdbSeries.first_air_date,
|
||||
last_air_date: seriesMetadata?.tmdbSeries.last_air_date,
|
||||
next_episode_to_air: seriesMetadata?.tmdbSeries.next_episode_to_air,
|
||||
seasons: seriesMetadata?.tmdbSeries.seasons,
|
||||
tmdbItem: {
|
||||
id: movieMetadata?.tmdbMovie.id ?? seriesMetadata?.tmdbSeries.id,
|
||||
poster_path:
|
||||
movieMetadata?.tmdbMovie.poster_path ??
|
||||
seriesMetadata?.tmdbSeries.poster_path,
|
||||
vote_average:
|
||||
movieMetadata?.tmdbMovie.vote_average ??
|
||||
seriesMetadata?.tmdbSeries.vote_average,
|
||||
title: movieMetadata?.tmdbMovie.title,
|
||||
release_date: movieMetadata?.tmdbMovie.release_date,
|
||||
runtime: movieMetadata?.tmdbMovie.runtime,
|
||||
name: seriesMetadata?.tmdbSeries.name,
|
||||
first_air_date: seriesMetadata?.tmdbSeries.first_air_date,
|
||||
last_air_date: seriesMetadata?.tmdbSeries.last_air_date,
|
||||
next_episode_to_air: seriesMetadata?.tmdbSeries.next_episode_to_air,
|
||||
seasons: seriesMetadata?.tmdbSeries.seasons,
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user