fix(mediarequest): optimise more typeorm lifecycle triggers (#1376)

This is related to #1218. This should fix more typeorm lifcycle trigger issues

fix #513
This commit is contained in:
fallenbagel
2025-02-23 00:16:03 +08:00
committed by GitHub
parent d563b36186
commit 80927b9705

View File

@@ -734,8 +734,11 @@ export class MediaRequest {
media.mediaType === MediaType.MOVIE && media.mediaType === MediaType.MOVIE &&
this.status === MediaRequestStatus.DECLINED this.status === MediaRequestStatus.DECLINED
) { ) {
media[this.is4k ? 'status4k' : 'status'] = MediaStatus.UNKNOWN; const statusField = this.is4k ? 'status4k' : 'status';
mediaRepository.save(media); await mediaRepository.update(
{ id: this.media.id },
{ [statusField]: MediaStatus.UNKNOWN }
);
} }
/** /**
@@ -752,8 +755,11 @@ export class MediaRequest {
).length === 0 && ).length === 0 &&
media[this.is4k ? 'status4k' : 'status'] === MediaStatus.PENDING media[this.is4k ? 'status4k' : 'status'] === MediaStatus.PENDING
) { ) {
media[this.is4k ? 'status4k' : 'status'] = MediaStatus.UNKNOWN; const statusField = this.is4k ? 'status4k' : 'status';
mediaRepository.save(media); mediaRepository.update(
{ id: this.media.id },
{ [statusField]: MediaStatus.UNKNOWN }
);
} }
// Approve child seasons if parent is approved // Approve child seasons if parent is approved
@@ -955,8 +961,10 @@ export class MediaRequest {
}); });
const requestRepository = getRepository(MediaRequest); const requestRepository = getRepository(MediaRequest);
this.status = MediaRequestStatus.APPROVED;
await requestRepository.save(this); await requestRepository.update(this.id, {
status: MediaRequestStatus.APPROVED,
});
return; return;
} }
@@ -986,18 +994,22 @@ export class MediaRequest {
throw new Error('Media data not found'); throw new Error('Media data not found');
} }
media[this.is4k ? 'externalServiceId4k' : 'externalServiceId'] = const updateFields = {
radarrMovie.id; [this.is4k ? 'externalServiceId4k' : 'externalServiceId']:
media[this.is4k ? 'externalServiceSlug4k' : 'externalServiceSlug'] = radarrMovie.id,
radarrMovie.titleSlug; [this.is4k ? 'externalServiceSlug4k' : 'externalServiceSlug']:
media[this.is4k ? 'serviceId4k' : 'serviceId'] = radarrSettings?.id; radarrMovie.titleSlug,
await mediaRepository.save(media); [this.is4k ? 'serviceId4k' : 'serviceId']: radarrMovie?.id,
};
await mediaRepository.update({ id: this.media.id }, updateFields);
}) })
.catch(async () => { .catch(async () => {
const requestRepository = getRepository(MediaRequest); const requestRepository = getRepository(MediaRequest);
this.status = MediaRequestStatus.FAILED; await requestRepository.update(this.id, {
await requestRepository.save(this); status: MediaRequestStatus.FAILED,
});
logger.warn( logger.warn(
'Something went wrong sending movie request to Radarr, marking status as FAILED', 'Something went wrong sending movie request to Radarr, marking status as FAILED',
@@ -1113,8 +1125,9 @@ export class MediaRequest {
}); });
const requestRepository = getRepository(MediaRequest); const requestRepository = getRepository(MediaRequest);
this.status = MediaRequestStatus.APPROVED; await requestRepository.update(this.id, {
await requestRepository.save(this); status: MediaRequestStatus.APPROVED,
});
return; return;
} }