mirror of
https://github.com/aleksilassila/reiverr.git
synced 2026-04-26 18:55:12 +02:00
feat: rewrite data fetching, refreshers, improved fetching performance
This commit is contained in:
@@ -68,12 +68,7 @@ export class LibraryController {
|
||||
direction,
|
||||
});
|
||||
|
||||
return {
|
||||
...response,
|
||||
items: await Promise.all(
|
||||
response.items.map((i) => this.libraryService.getLibraryItemDto(i)),
|
||||
),
|
||||
};
|
||||
return response
|
||||
}
|
||||
|
||||
@Get('catalogue/:sourceId')
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { ApiProperty, PickType } from '@nestjs/swagger';
|
||||
import { TmdbItemDto } from 'src/metadata/tmdb/tmdb.dto';
|
||||
import { LibraryItem } from './library.entity';
|
||||
import { PlayStateDto } from '../play-state/play-state.dto';
|
||||
import { PlayState } from '../play-state/play-state.entity';
|
||||
|
||||
export enum OrderDirection {
|
||||
Asc = 'asc',
|
||||
@@ -44,6 +46,9 @@ export class LibraryItemDto extends PickType(LibraryItem, [
|
||||
@ApiProperty()
|
||||
tmdbItem: TmdbItemDto;
|
||||
|
||||
@ApiProperty({ type: PlayStateDto, required: false })
|
||||
lastPlayState?: PlayState;
|
||||
|
||||
@ApiProperty({ required: false })
|
||||
watched?: boolean;
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ export class LibraryService {
|
||||
status?: MyListStatusFilter;
|
||||
order?: MyListOrder;
|
||||
direction?: OrderDirection;
|
||||
}): Promise<PaginatedResponseDto<LibraryItem>> {
|
||||
}): Promise<PaginatedResponseDto<LibraryItemDto>> {
|
||||
const {
|
||||
userId,
|
||||
pagination,
|
||||
@@ -191,7 +191,9 @@ export class LibraryService {
|
||||
// console.log(builder.getQuery());
|
||||
|
||||
return {
|
||||
items,
|
||||
items: await Promise.all(
|
||||
items.map((item) => this.getLibraryItemDto(item)),
|
||||
),
|
||||
total,
|
||||
itemsPerPage: pagination.itemsPerPage,
|
||||
page: pagination.page,
|
||||
@@ -286,7 +288,7 @@ export class LibraryService {
|
||||
),
|
||||
};
|
||||
} else if (type === CatalogueTypeFilter.Missing && missing) {
|
||||
const tmdbIdToMyListItem: Record<string, LibraryItem> = {};
|
||||
const tmdbIdToMyListItem: Record<string, LibraryItemDto> = {};
|
||||
const myListItems = await this.getMyList({
|
||||
pagination: {
|
||||
itemsPerPage: 500,
|
||||
@@ -315,12 +317,7 @@ export class LibraryService {
|
||||
direction,
|
||||
});
|
||||
|
||||
return {
|
||||
...response,
|
||||
items: await Promise.all(
|
||||
response.items.map((item) => this.getLibraryItemDto(item)),
|
||||
),
|
||||
};
|
||||
return response;
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
@@ -404,6 +401,7 @@ export class LibraryService {
|
||||
mediaType: mediaType === 'movie' ? MediaType.Movie : MediaType.Series,
|
||||
watched,
|
||||
playStates,
|
||||
lastPlayState: playStates?.[0],
|
||||
tmdbItem: {
|
||||
id: movieMetadata?.tmdbMovie.id ?? seriesMetadata?.tmdbSeries.id,
|
||||
poster_path:
|
||||
|
||||
Reference in New Issue
Block a user