From 1756ac21a8ff3e5854960cb4d4ff9f8e6192d2e6 Mon Sep 17 00:00:00 2001 From: SpecialX <47072643+wangxiner55@users.noreply.github.com> Date: Sun, 5 Jul 2026 17:52:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(cache):=20=E6=96=B0=E5=A2=9E=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E5=A4=B1=E6=95=88=E6=98=A0=E5=B0=84=E5=AD=90?= =?UTF-8?q?=E9=9B=86=EF=BC=88queryKeys=20only=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/cache/client-invalidation-map.ts | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/shared/lib/cache/client-invalidation-map.ts diff --git a/src/shared/lib/cache/client-invalidation-map.ts b/src/shared/lib/cache/client-invalidation-map.ts new file mode 100644 index 0000000..83386ed --- /dev/null +++ b/src/shared/lib/cache/client-invalidation-map.ts @@ -0,0 +1,20 @@ +/** + * 客户端可见的失效映射子集(仅 queryKeys 字段)。 + * + * 从 invalidation-map.ts 提取 queryKeys,避免客户端 bundle 拉入 + * revalidateTag 等 server-only 依赖。 + * + * 由 useActionMutation 在 onSuccess 中查询以自动 invalidateQueries。 + */ +export const CLIENT_INVALIDATION_MAP = { + "classes.create": { queryKeys: [["classes", "list"]] }, + "classes.update": { queryKeys: [["classes", "detail"], ["classes", "list"]] }, + "classes.delete": { queryKeys: [["classes", "list"], ["classes", "detail"]] }, + "classes.students.update": { queryKeys: [["classes", "students"]] }, + "classes.schedule.update": { queryKeys: [["classes", "schedule"]] }, + "classes.grade.update": { queryKeys: [["classes", "list"]] }, + "classes.invitation.create": { queryKeys: [["classes", "invitations"]] }, + "classes.invitation.revoke": { queryKeys: [["classes", "invitations"]] }, +} as const + +export type ClientInvalidationActionId = keyof typeof CLIENT_INVALIDATION_MAP