From 747b84d4c995f1cb28cc6ea6ed8a32ade3472a46 Mon Sep 17 00:00:00 2001 From: fallenbagel <98979876+Fallenbagel@users.noreply.github.com> Date: Mon, 16 Feb 2026 09:56:39 +0800 Subject: [PATCH] feat(routing): implemet deletion of associated routing rules when sonarr instance removed --- server/routes/settings/sonarr.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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();