refactor(MediaRequest): consolidate lifecycle hooks into subscriber & restrict cascade to prevent recursion (#4124)

* fix(mediarequest entity): narrow cascade to insert & remove to prevent hook recursion

Restrict cascade options on the MediaRequest→Media relation to only `insert` and `remove`to avoid
nested subscriber/AfterUpdate recursion when saving entities.

* fix(mediarequest): move methods modifying MediaRequest to its Subscriber

* fix(mediasubscriber): use event.manager for parent media updates on remove

Replace `getRepository(Media)` calls with `event.manager` in the `afterRemove` hook so that
parent-media status resets run within the same transaction/QueryRunner (important for postgresql.
Doesnt affect sqlite).

* refactor(mediasubscriber): make afterInsert and afterUpdate async and await internal operations

This should prevent unhandled promise rejections and ensure sequential execution of lifecycle
actions

---------

Co-authored-by: Gauthier <mail@gauthierth.fr>
This commit is contained in:
fallenbagel
2025-05-05 16:04:11 +08:00
committed by OwsleyJr
parent 9967983a95
commit b383bbcdc1
3 changed files with 676 additions and 79 deletions

View File

@@ -103,7 +103,7 @@ class Media {
public status4k: MediaStatus;
@OneToMany(() => MediaRequest, (request) => request.media, {
cascade: ['insert', 'remove'],
cascade: ['insert', 'update'],
})
public requests: MediaRequest[];