mirror of
https://github.com/aleksilassila/reiverr.git
synced 2026-04-27 11:05:13 +02:00
feat: show recently played from library on front pages
This commit is contained in:
@@ -43,7 +43,10 @@ export class LibraryController {
|
||||
): Promise<PaginatedResponseDto<LibraryItemDto>> {
|
||||
// const user = await this.userService.findOne(userId);
|
||||
|
||||
const items = await this.libraryService.getLibraryItems(userId, pagination);
|
||||
const items = await this.libraryService.getLibraryItemsWithMetadata(
|
||||
userId,
|
||||
pagination,
|
||||
);
|
||||
|
||||
return {
|
||||
items,
|
||||
|
||||
@@ -2,6 +2,7 @@ import { ApiProperty } from '@nestjs/swagger';
|
||||
import { MovieDto } from 'src/metadata/metadata.dto';
|
||||
import { PlayStateDto } from '../play-state/play-state.dto';
|
||||
import { MediaType } from 'src/common/common.dto';
|
||||
import { Series } from 'src/metadata/metadata.entity';
|
||||
|
||||
export class LibraryItemDto {
|
||||
@ApiProperty()
|
||||
@@ -14,5 +15,8 @@ export class LibraryItemDto {
|
||||
playStates?: PlayStateDto[];
|
||||
|
||||
@ApiProperty({ type: MovieDto, required: false })
|
||||
metadata?: MovieDto; // TODO
|
||||
movieMetadata?: MovieDto;
|
||||
|
||||
@ApiProperty({ type: Series, required: false })
|
||||
seriesMetadata?: Series;
|
||||
}
|
||||
|
||||
@@ -3,15 +3,41 @@ import { USER_LIBRARY_REPOSITORY } from '../user.providers';
|
||||
import { Repository } from 'typeorm';
|
||||
import { LibraryItem } from './library.entity';
|
||||
import { MediaType, PaginationParamsDto } from 'src/common/common.dto';
|
||||
import { LibraryItemDto } from './library.dto';
|
||||
import { MetadataService } from 'src/metadata/metadata.service';
|
||||
|
||||
@Injectable()
|
||||
export class LibraryService {
|
||||
constructor(
|
||||
@Inject(USER_LIBRARY_REPOSITORY)
|
||||
private readonly libraryRepository: Repository<LibraryItem>,
|
||||
private readonly metadataService: MetadataService,
|
||||
) {}
|
||||
|
||||
async getLibraryItems(
|
||||
async getLibraryItemsWithMetadata(
|
||||
userId: string,
|
||||
pagination: PaginationParamsDto,
|
||||
): Promise<LibraryItemDto[]> {
|
||||
const items = await this.getLibraryItems(userId, pagination);
|
||||
|
||||
return Promise.all(
|
||||
items.map(async (item) => {
|
||||
return {
|
||||
...item,
|
||||
movieMetadata:
|
||||
item.mediaType === MediaType.Movie
|
||||
? await this.metadataService.getMovieByTmdbId(item.tmdbId)
|
||||
: undefined,
|
||||
seriesMetadata:
|
||||
item.mediaType === MediaType.Series
|
||||
? await this.metadataService.getSeriesByTmdbId(item.tmdbId)
|
||||
: undefined,
|
||||
};
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
private async getLibraryItems(
|
||||
userId: string,
|
||||
pagination: PaginationParamsDto,
|
||||
): Promise<LibraryItem[]> {
|
||||
|
||||
@@ -10,9 +10,14 @@ import { PlayStateService } from './play-state/play-state.service';
|
||||
import { LibraryController } from './library/library.controller';
|
||||
import { PlayStateController } from './play-state/play-state.controller';
|
||||
import { SourcePluginsModule } from 'src/source-plugins/source-plugins.module';
|
||||
import { MetadataModule } from 'src/metadata/metadata.module';
|
||||
|
||||
@Module({
|
||||
imports: [DatabaseModule, forwardRef(() => SourcePluginsModule)],
|
||||
imports: [
|
||||
DatabaseModule,
|
||||
forwardRef(() => SourcePluginsModule),
|
||||
forwardRef(() => MetadataModule),
|
||||
],
|
||||
providers: [
|
||||
...userProviders,
|
||||
UsersService,
|
||||
|
||||
Reference in New Issue
Block a user