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 (
|
if (
|
||||||
media[entity.is4k ? 'status4k' : 'status'] === MediaStatus.AVAILABLE
|
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',
|
label: 'Media Request',
|
||||||
requestId: entity.id,
|
requestId: entity.id,
|
||||||
mediaId: entity.media.id,
|
mediaId: entity.media.id,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (entity.status !== MediaRequestStatus.APPROVED) {
|
const requestRepository = getRepository(MediaRequest);
|
||||||
const requestRepository = getRepository(MediaRequest);
|
entity.status = MediaRequestStatus.COMPLETED;
|
||||||
entity.status = MediaRequestStatus.APPROVED;
|
await requestRepository.save(entity);
|
||||||
await requestRepository.save(entity);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -545,17 +543,18 @@ export class MediaRequestSubscriber implements EntitySubscriberInterface<MediaRe
|
|||||||
if (
|
if (
|
||||||
media[entity.is4k ? 'status4k' : 'status'] === MediaStatus.AVAILABLE
|
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',
|
label: 'Media Request',
|
||||||
requestId: entity.id,
|
requestId: entity.id,
|
||||||
mediaId: entity.media.id,
|
mediaId: entity.media.id,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (entity.status !== MediaRequestStatus.APPROVED) {
|
const requestRepository = getRepository(MediaRequest);
|
||||||
const requestRepository = getRepository(MediaRequest);
|
entity.status = MediaRequestStatus.COMPLETED;
|
||||||
entity.status = MediaRequestStatus.APPROVED;
|
entity.seasons.forEach((season) => {
|
||||||
await requestRepository.save(entity);
|
season.status = MediaRequestStatus.COMPLETED;
|
||||||
}
|
});
|
||||||
|
await requestRepository.save(entity);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -986,6 +985,15 @@ export class MediaRequestSubscriber implements EntitySubscriberInterface<MediaRe
|
|||||||
try {
|
try {
|
||||||
await this.sendToRadarr(event.entity as MediaRequest);
|
await this.sendToRadarr(event.entity as MediaRequest);
|
||||||
await this.sendToSonarr(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);
|
await this.updateParentStatus(event.entity as MediaRequest);
|
||||||
|
|
||||||
if (event.entity.status === MediaRequestStatus.COMPLETED) {
|
if (event.entity.status === MediaRequestStatus.COMPLETED) {
|
||||||
@@ -997,11 +1005,14 @@ export class MediaRequestSubscriber implements EntitySubscriberInterface<MediaRe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.error('Error in afterUpdate subscriber', {
|
logger.error(
|
||||||
label: 'Media Request',
|
'Error while updating parent status in afterUpdate subscriber',
|
||||||
requestId: (event.entity as MediaRequest).id,
|
{
|
||||||
errorMessage: e instanceof Error ? e.message : String(e),
|
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 {
|
try {
|
||||||
await this.sendToRadarr(event.entity as MediaRequest);
|
await this.sendToRadarr(event.entity as MediaRequest);
|
||||||
await this.sendToSonarr(event.entity as MediaRequest);
|
await this.sendToSonarr(event.entity as MediaRequest);
|
||||||
await this.updateParentStatus(event.entity as MediaRequest);
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.error('Error in afterInsert subscriber', {
|
logger.error('Error while sending to *arr in afterInsert subscriber', {
|
||||||
label: 'Media Request',
|
label: 'Media Request',
|
||||||
requestId: (event.entity as MediaRequest).id,
|
requestId: (event.entity as MediaRequest).id,
|
||||||
errorMessage: e instanceof Error ? e.message : String(e),
|
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> {
|
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 Season from '@server/entity/Season';
|
||||||
import SeasonRequest from '@server/entity/SeasonRequest';
|
import SeasonRequest from '@server/entity/SeasonRequest';
|
||||||
import type { EntitySubscriberInterface, UpdateEvent } from 'typeorm';
|
import type { EntitySubscriberInterface, UpdateEvent } from 'typeorm';
|
||||||
import { EventSubscriber } from 'typeorm';
|
import { EventSubscriber, In } from 'typeorm';
|
||||||
|
|
||||||
@EventSubscriber()
|
@EventSubscriber()
|
||||||
export class MediaSubscriber implements EntitySubscriberInterface<Media> {
|
export class MediaSubscriber implements EntitySubscriberInterface<Media> {
|
||||||
@@ -45,7 +45,7 @@ export class MediaSubscriber implements EntitySubscriberInterface<Media> {
|
|||||||
},
|
},
|
||||||
where: {
|
where: {
|
||||||
media: { id: event.id },
|
media: { id: event.id },
|
||||||
status: MediaRequestStatus.APPROVED,
|
status: In([MediaRequestStatus.APPROVED, MediaRequestStatus.FAILED]),
|
||||||
is4k,
|
is4k,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user