fix: disambiguate tmdb ids by media type across lookups (#2577)
This commit is contained in:
@@ -30,22 +30,17 @@ import Season from './Season';
|
||||
class Media {
|
||||
public static async getRelatedMedia(
|
||||
user: User | undefined,
|
||||
tmdbIds: number | number[]
|
||||
items: { tmdbId: number; mediaType: string }[]
|
||||
): Promise<Media[]> {
|
||||
const mediaRepository = getRepository(Media);
|
||||
|
||||
try {
|
||||
let finalIds: number[];
|
||||
if (!Array.isArray(tmdbIds)) {
|
||||
finalIds = [tmdbIds];
|
||||
} else {
|
||||
finalIds = tmdbIds;
|
||||
}
|
||||
|
||||
if (finalIds.length === 0) {
|
||||
if (items.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const finalIds = [...new Set(items.map((i) => i.tmdbId))];
|
||||
|
||||
const media = await mediaRepository
|
||||
.createQueryBuilder('media')
|
||||
.leftJoinAndSelect(
|
||||
@@ -57,7 +52,9 @@ class Media {
|
||||
.where(' media.tmdbId in (:...finalIds)', { finalIds })
|
||||
.getMany();
|
||||
|
||||
return media;
|
||||
return media.filter((m) =>
|
||||
items.some((i) => i.tmdbId === m.tmdbId && i.mediaType === m.mediaType)
|
||||
);
|
||||
} catch (e) {
|
||||
logger.error(e.message);
|
||||
return [];
|
||||
|
||||
Reference in New Issue
Block a user