Add Sonarr and Radarr list integrations

- New `lists` service fetches Sonarr/Radarr library via their REST APIs
  and auto-imports matching titles from TMDB into the user's watchlist
- `app/api/lists/[token]/route.ts` webhook endpoint triggers a list sync
- Unified `IntegrationCard` component replaces `WebhookCard`, handling
  both webhook-style (Plex/Jellyfin/Emby) and list-style (Sonarr/Radarr)
  integrations with per-type config forms
- Schema migration adds `sonarr` and `radarr` to the integration type
  enum and a `listConnections` table for list-based integrations
- 212 tests added for the lists service covering import, deduplication,
  and error handling
This commit is contained in:
2026-03-06 15:34:34 -05:00
parent 8a3717cea7
commit 49cea568a9
27 changed files with 3787 additions and 604 deletions
+6
View File
@@ -61,9 +61,15 @@ export interface TmdbTvDetails {
content_ratings?: {
results: { iso_3166_1: string; rating: string }[];
};
external_ids?: TmdbExternalIds;
seasons: TmdbSeasonSummary[];
}
export interface TmdbExternalIds {
tvdb_id: number | null;
imdb_id: string | null;
}
export interface TmdbSeasonSummary {
id: number;
season_number: number;