feat(routing): implemet deletion of associated routing rules when sonarr instance removed

This commit is contained in:
fallenbagel
2026-02-16 09:56:39 +08:00
parent be58352925
commit 747b84d4c9

View File

@@ -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();