diff --git a/server/models/Podcast.js b/server/models/Podcast.js index 356bd41e..fa27821d 100644 --- a/server/models/Podcast.js +++ b/server/models/Podcast.js @@ -1,6 +1,7 @@ const { DataTypes, Model } = require('sequelize') const { getTitlePrefixAtEnd, getTitleIgnorePrefix } = require('../utils') const Logger = require('../Logger') +const libraryItemsPodcastFilters = require('../utils/queries/libraryItemsPodcastFilters') /** * @typedef PodcastExpandedProperties @@ -148,6 +149,14 @@ class Podcast extends Model { modelName: 'podcast' } ) + + Podcast.addHook('afterDestroy', async (instance) => { + libraryItemsPodcastFilters.clearCountCache('podcast', 'afterDestroy') + }) + + Podcast.addHook('afterCreate', async (instance) => { + libraryItemsPodcastFilters.clearCountCache('podcast', 'afterCreate') + }) } get hasMediaFiles() { diff --git a/server/models/PodcastEpisode.js b/server/models/PodcastEpisode.js index 08baa4be..4746f315 100644 --- a/server/models/PodcastEpisode.js +++ b/server/models/PodcastEpisode.js @@ -1,5 +1,5 @@ const { DataTypes, Model } = require('sequelize') - +const libraryItemsPodcastFilters = require('../utils/queries/libraryItemsPodcastFilters') /** * @typedef ChapterObject * @property {number} id @@ -132,6 +132,14 @@ class PodcastEpisode extends Model { onDelete: 'CASCADE' }) PodcastEpisode.belongsTo(podcast) + + PodcastEpisode.addHook('afterDestroy', async (instance) => { + libraryItemsPodcastFilters.clearCountCache('podcastEpisode', 'afterDestroy') + }) + + PodcastEpisode.addHook('afterCreate', async (instance) => { + libraryItemsPodcastFilters.clearCountCache('podcastEpisode', 'afterCreate') + }) } get size() { diff --git a/server/utils/queries/libraryItemsPodcastFilters.js b/server/utils/queries/libraryItemsPodcastFilters.js index b15c01a9..a0411381 100644 --- a/server/utils/queries/libraryItemsPodcastFilters.js +++ b/server/utils/queries/libraryItemsPodcastFilters.js @@ -100,7 +100,8 @@ module.exports = { return [] }, - clearCountCache() { + clearCountCache(model, hook) { + Logger.debug(`[LibraryItemsPodcastFilters] ${model}.${hook}: Clearing count cache`) countCache.clear() },