Update cached user whenever mediaProgress is removed

This commit is contained in:
mikiher 2025-02-16 08:52:33 +02:00
parent 7282afcfde
commit f1de307bf9
2 changed files with 18 additions and 0 deletions

View File

@ -126,6 +126,16 @@ class MediaProgress extends Model {
} }
}) })
// make sure to call the afterDestroy hook for each instance
MediaProgress.addHook('beforeBulkDestroy', (options) => {
options.individualHooks = true
})
// update the potentially cached user after destroying the media progress
MediaProgress.addHook('afterDestroy', (instance) => {
user.mediaProgressRemoved(instance)
})
user.hasMany(MediaProgress, { user.hasMany(MediaProgress, {
onDelete: 'CASCADE' onDelete: 'CASCADE'
}) })

View File

@ -404,6 +404,14 @@ class User extends Model {
return count > 0 return count > 0
} }
static mediaProgressRemoved(mediaProgress) {
const cachedUser = userCache.getById(mediaProgress.userId)
if (cachedUser) {
Logger.debug(`[User] mediaProgressRemoved: ${mediaProgress.id} from user ${cachedUser.id}`)
cachedUser.mediaProgresses = cachedUser.mediaProgresses.filter((mp) => mp.id !== mediaProgress.id)
}
}
/** /**
* Initialize model * Initialize model
* @param {import('../Database').sequelize} sequelize * @param {import('../Database').sequelize} sequelize