mirror of
https://github.com/seerr-team/seerr.git
synced 2026-04-18 14:28:15 -04:00
fix(requests): mark requests as completed when media is already available (#2462)
Co-authored-by: fallenbagel <98979876+Fallenbagel@users.noreply.github.com>
This commit is contained in:
@@ -348,17 +348,15 @@ export class MediaRequestSubscriber implements EntitySubscriberInterface<MediaRe
|
||||
if (
|
||||
media[entity.is4k ? 'status4k' : 'status'] === MediaStatus.AVAILABLE
|
||||
) {
|
||||
logger.warn('Media already exists, marking request as APPROVED', {
|
||||
logger.warn('Media already exists, marking request as COMPLETED', {
|
||||
label: 'Media Request',
|
||||
requestId: entity.id,
|
||||
mediaId: entity.media.id,
|
||||
});
|
||||
|
||||
if (entity.status !== MediaRequestStatus.APPROVED) {
|
||||
const requestRepository = getRepository(MediaRequest);
|
||||
entity.status = MediaRequestStatus.APPROVED;
|
||||
await requestRepository.save(entity);
|
||||
}
|
||||
const requestRepository = getRepository(MediaRequest);
|
||||
entity.status = MediaRequestStatus.COMPLETED;
|
||||
await requestRepository.save(entity);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -545,17 +543,18 @@ export class MediaRequestSubscriber implements EntitySubscriberInterface<MediaRe
|
||||
if (
|
||||
media[entity.is4k ? 'status4k' : 'status'] === MediaStatus.AVAILABLE
|
||||
) {
|
||||
logger.warn('Media already exists, marking request as APPROVED', {
|
||||
logger.warn('Media already exists, marking request as COMPLETED', {
|
||||
label: 'Media Request',
|
||||
requestId: entity.id,
|
||||
mediaId: entity.media.id,
|
||||
});
|
||||
|
||||
if (entity.status !== MediaRequestStatus.APPROVED) {
|
||||
const requestRepository = getRepository(MediaRequest);
|
||||
entity.status = MediaRequestStatus.APPROVED;
|
||||
await requestRepository.save(entity);
|
||||
}
|
||||
const requestRepository = getRepository(MediaRequest);
|
||||
entity.status = MediaRequestStatus.COMPLETED;
|
||||
entity.seasons.forEach((season) => {
|
||||
season.status = MediaRequestStatus.COMPLETED;
|
||||
});
|
||||
await requestRepository.save(entity);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -986,6 +985,15 @@ export class MediaRequestSubscriber implements EntitySubscriberInterface<MediaRe
|
||||
try {
|
||||
await this.sendToRadarr(event.entity as MediaRequest);
|
||||
await this.sendToSonarr(event.entity as MediaRequest);
|
||||
} catch (e) {
|
||||
logger.error('Error while sending to *arr in afterUpdate subscriber', {
|
||||
label: 'Media Request',
|
||||
requestId: (event.entity as MediaRequest).id,
|
||||
errorMessage: e instanceof Error ? e.message : String(e),
|
||||
});
|
||||
}
|
||||
|
||||
try {
|
||||
await this.updateParentStatus(event.entity as MediaRequest);
|
||||
|
||||
if (event.entity.status === MediaRequestStatus.COMPLETED) {
|
||||
@@ -997,11 +1005,14 @@ export class MediaRequestSubscriber implements EntitySubscriberInterface<MediaRe
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
logger.error('Error in afterUpdate subscriber', {
|
||||
label: 'Media Request',
|
||||
requestId: (event.entity as MediaRequest).id,
|
||||
errorMessage: e instanceof Error ? e.message : String(e),
|
||||
});
|
||||
logger.error(
|
||||
'Error while updating parent status in afterUpdate subscriber',
|
||||
{
|
||||
label: 'Media Request',
|
||||
requestId: (event.entity as MediaRequest).id,
|
||||
errorMessage: e instanceof Error ? e.message : String(e),
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1013,14 +1024,26 @@ export class MediaRequestSubscriber implements EntitySubscriberInterface<MediaRe
|
||||
try {
|
||||
await this.sendToRadarr(event.entity as MediaRequest);
|
||||
await this.sendToSonarr(event.entity as MediaRequest);
|
||||
await this.updateParentStatus(event.entity as MediaRequest);
|
||||
} catch (e) {
|
||||
logger.error('Error in afterInsert subscriber', {
|
||||
logger.error('Error while sending to *arr in afterInsert subscriber', {
|
||||
label: 'Media Request',
|
||||
requestId: (event.entity as MediaRequest).id,
|
||||
errorMessage: e instanceof Error ? e.message : String(e),
|
||||
});
|
||||
}
|
||||
|
||||
try {
|
||||
await this.updateParentStatus(event.entity as MediaRequest);
|
||||
} catch (e) {
|
||||
logger.error(
|
||||
'Error while updating parent status in afterInsert subscriber',
|
||||
{
|
||||
label: 'Media Request',
|
||||
requestId: (event.entity as MediaRequest).id,
|
||||
errorMessage: e instanceof Error ? e.message : String(e),
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public async afterRemove(event: RemoveEvent<MediaRequest>): Promise<void> {
|
||||
|
||||
@@ -9,7 +9,7 @@ import { MediaRequest } from '@server/entity/MediaRequest';
|
||||
import Season from '@server/entity/Season';
|
||||
import SeasonRequest from '@server/entity/SeasonRequest';
|
||||
import type { EntitySubscriberInterface, UpdateEvent } from 'typeorm';
|
||||
import { EventSubscriber } from 'typeorm';
|
||||
import { EventSubscriber, In } from 'typeorm';
|
||||
|
||||
@EventSubscriber()
|
||||
export class MediaSubscriber implements EntitySubscriberInterface<Media> {
|
||||
@@ -45,7 +45,7 @@ export class MediaSubscriber implements EntitySubscriberInterface<Media> {
|
||||
},
|
||||
where: {
|
||||
media: { id: event.id },
|
||||
status: MediaRequestStatus.APPROVED,
|
||||
status: In([MediaRequestStatus.APPROVED, MediaRequestStatus.FAILED]),
|
||||
is4k,
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user