diff --git a/server/routes/settings/sonarr.ts b/server/routes/settings/sonarr.ts index 84bf4d793..9328ab6c9 100644 --- a/server/routes/settings/sonarr.ts +++ b/server/routes/settings/sonarr.ts @@ -1,4 +1,6 @@ import SonarrAPI from '@server/api/servarr/sonarr'; +import { getRepository } from '@server/datasource'; +import RoutingRule from '@server/entity/RoutingRule'; import type { SonarrSettings } from '@server/lib/settings'; import { getSettings } from '@server/lib/settings'; import logger from '@server/logger'; @@ -108,6 +110,7 @@ sonarrRoutes.put<{ id: string }>('/:id', async (req, res) => { sonarrRoutes.delete<{ id: string }>('/:id', async (req, res) => { const settings = getSettings(); + const routingRuleRepository = getRepository(RoutingRule); const sonarrIndex = settings.sonarr.findIndex( (r) => r.id === Number(req.params.id) @@ -119,6 +122,19 @@ sonarrRoutes.delete<{ id: string }>('/:id', async (req, res) => { .json({ status: '404', message: 'Settings instance not found' }); } + const instanceId = Number(req.params.id); + + const rulesToDelete = await routingRuleRepository.find({ + where: { + serviceType: 'sonarr', + targetServiceId: instanceId, + }, + }); + + if (rulesToDelete.length > 0) { + await routingRuleRepository.remove(rulesToDelete); + } + const removed = settings.sonarr.splice(sonarrIndex, 1); await settings.save();