fix(requests): update requests to approved when parent media is set as available

fixes #688
This commit is contained in:
sct
2021-01-19 15:10:15 +00:00
parent 8927c6d2e3
commit 78444a9e64
2 changed files with 67 additions and 9 deletions

View File

@@ -5,7 +5,7 @@ import {
UpdateEvent,
} from 'typeorm';
import TheMovieDb from '../api/themoviedb';
import { MediaStatus, MediaType } from '../constants/media';
import { MediaRequestStatus, MediaStatus, MediaType } from '../constants/media';
import Media from '../entity/Media';
import { MediaRequest } from '../entity/MediaRequest';
import Season from '../entity/Season';
@@ -102,6 +102,21 @@ export class MediaSubscriber implements EntitySubscriberInterface {
}
}
private async updateChildRequestStatus(event: Media, is4k: boolean) {
const requestRepository = getRepository(MediaRequest);
const requests = await requestRepository.find({
where: { media: event.id },
});
for (const request of requests) {
if (request.is4k === is4k) {
request.status = MediaRequestStatus.APPROVED;
await requestRepository.save(request);
}
}
}
public beforeUpdate(event: UpdateEvent<Media>): void {
if (!event.entity) {
return;
@@ -121,5 +136,19 @@ export class MediaSubscriber implements EntitySubscriberInterface {
) {
this.notifyAvailableSeries(event.entity, event.databaseEntity);
}
if (
event.entity.status === MediaStatus.AVAILABLE &&
event.databaseEntity.status === MediaStatus.PENDING
) {
this.updateChildRequestStatus(event.entity, false);
}
if (
event.entity.status4k === MediaStatus.AVAILABLE &&
event.databaseEntity.status4k === MediaStatus.PENDING
) {
this.updateChildRequestStatus(event.entity, true);
}
}
}