import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import type { CacheClearResult, ImageCacheStatus, TmdbCacheList } from "@umt/contracts"; import { apiData } from "~/lib/api.ts"; // C2-A 缓存管理:TMDB 缓存(条数 / 上限 / TTL / 清空)、图片代理缓存(用量 / 清空) const keys = { tmdb: ["cache", "tmdb"] as const, images: ["cache", "images"] as const }; export function useTmdbCache() { return useQuery({ queryKey: keys.tmdb, queryFn: ({ signal }) => apiData("/cache/tmdb?limit=1", { signal }), }); } export function useClearTmdbCache() { const qc = useQueryClient(); return useMutation({ mutationFn: () => apiData("/cache/tmdb/clear", { method: "POST" }), onSuccess: () => qc.invalidateQueries({ queryKey: keys.tmdb }), }); } export function useImageCache() { return useQuery({ queryKey: keys.images, queryFn: ({ signal }) => apiData("/cache/images", { signal }), }); } export function useClearImageCache() { const qc = useQueryClient(); return useMutation({ mutationFn: () => apiData("/cache/images/clear", { method: "POST" }), onSuccess: () => qc.invalidateQueries({ queryKey: keys.images }), }); }