Consolidate two overlapping cache systems (broken TanStack persister + per-query Redis hash + pub/sub) into one: TanStack Query as single source of truth with Redis as its persistence layer via createAsyncStoragePersister. - Replace QueryClientProvider with PersistQueryClientProvider backed by Redis - Set global query defaults (staleTime: 0, refetchInterval: 30s, gcTime: 24h) - Remove all per-widget staleTime/refetchInterval/retry/refetchOnWindowFocus overrides - Replace cached request handlers with simplified fetch-only versions - Remove all tRPC subscription procedures and useSubscription calls in favor of polling - Delete 20 cron jobs that only pre-warmed server-side cache - Simplify Redis from per-query hash to single blob per user+board
29 lines
1012 B
TypeScript
29 lines
1012 B
TypeScript
|
|
import type { IntegrationKindByCategory } from "@homarr/definitions";
|
|
import { createIntegrationAsync } from "@homarr/integrations";
|
|
import type { TdarrQueue, TdarrStatistics, TdarrWorker } from "@homarr/integrations";
|
|
|
|
import { createIntegrationRequestHandler } from "./lib/integration-request-handler";
|
|
|
|
export const mediaTranscodingRequestHandler = createIntegrationRequestHandler<
|
|
MediaTranscoding,
|
|
IntegrationKindByCategory<"mediaTranscoding">,
|
|
{ pageOffset: number; pageSize: number }
|
|
>({
|
|
queryKey: "mediaTranscoding",
|
|
async requestAsync(integration, input) {
|
|
const integrationInstance = await createIntegrationAsync(integration);
|
|
return {
|
|
queue: await integrationInstance.getQueueAsync(input.pageOffset, input.pageSize),
|
|
workers: await integrationInstance.getWorkersAsync(),
|
|
statistics: await integrationInstance.getStatisticsAsync(),
|
|
};
|
|
},
|
|
});
|
|
|
|
export interface MediaTranscoding {
|
|
queue: TdarrQueue;
|
|
workers: TdarrWorker[];
|
|
statistics: TdarrStatistics;
|
|
}
|