Files
homarr/packages/request-handler/src/media-organizer.ts
T

34 lines
1.2 KiB
TypeScript

import type { IntegrationKindByCategory } from "@homarr/definitions";
import { createIntegrationAsync } from "@homarr/integrations";
import type { IMediaOrganizerIntegration, MissingMediaItem, QueuedMediaItem } from "@homarr/integrations/types";
import { createIntegrationRequestHandler } from "./lib/integration-request-handler";
interface MediaOrganizerData {
missing: MissingMediaItem[];
missingCount: number;
queued: QueuedMediaItem[];
queuedCount: number;
}
export const mediaOrganizerRequestHandler = createIntegrationRequestHandler<
MediaOrganizerData,
IntegrationKindByCategory<"mediaOrganizer">,
{ pageSize: number }
>({
async requestAsync(integration, input) {
const integrationInstance = (await createIntegrationAsync(integration)) as unknown as IMediaOrganizerIntegration;
const [missingResult, queueResult] = await Promise.all([
integrationInstance.getMissingAsync(input.pageSize),
integrationInstance.getMediaQueueAsync(input.pageSize),
]);
return {
missing: missingResult.items,
missingCount: missingResult.totalCount,
queued: queueResult.items,
queuedCount: queueResult.totalCount,
};
},
cacheTtlMs: 60_000,
});