import { OverseerrRequest, MediaEntry, EnrichedRequest } from "@/lib/types"; import { bytesToGB } from "@/lib/aggregate"; export function enrichRequests( userRequests: OverseerrRequest[], radarrMap: Map, sonarrMap: Map, seerrBaseUrl?: string ): EnrichedRequest[] { return userRequests.map((req) => { let sizeOnDisk = 0; let title = req.media.title ?? ""; if (req.type === "movie") { const entry = radarrMap.get(req.media.tmdbId); sizeOnDisk = entry?.sizeOnDisk ?? 0; if (entry?.title) title = entry.title; } else if (req.type === "tv" && req.media.tvdbId) { const entry = sonarrMap.get(req.media.tvdbId); sizeOnDisk = entry?.sizeOnDisk ?? 0; if (entry?.title) title = entry.title; } if (!title) { title = req.type === "movie" ? `Movie #${req.media.tmdbId}` : `Show #${req.media.tmdbId}`; } const seerrUrl = seerrBaseUrl ? `${seerrBaseUrl}/${req.type === "movie" ? "movie" : "tv"}/${req.media.tmdbId}` : undefined; return { id: req.id, type: req.type, status: req.status, createdAt: req.createdAt, mediaId: req.type === "movie" ? req.media.tmdbId : (req.media.tvdbId ?? 0), title, sizeOnDisk, sizeGB: bytesToGB(sizeOnDisk), seerrUrl, }; }); }