import { getQueryKey } from "@trpc/react-query"; import { api, RouterOutputs } from "../trpc"; // Adjust path as necessary import { useQueryClient, UseMutationResult } from "@tanstack/react-query"; import { ObjectType } from "@nice/common"; import { CrudOperation, emitDataChange } from "../../event"; import { UseTRPCMutationResult } from "@trpc/react-query/shared"; interface SportOperation { createSportProject: UseTRPCMutationResult< RouterOutputs["sportProject"]["create"], Error, // 统一使用Error类型 Parameters[0], unknown >; createSportStandard: UseTRPCMutationResult< RouterOutputs["sportStandard"]["createStandard"], Error, Parameters>[0], unknown >; softDeleteByIds: UseTRPCMutationResult< RouterOutputs["sportProject"]["softDeleteByIds"], Error, Parameters[0], unknown >; updateSportStandard: UseTRPCMutationResult< RouterOutputs["sportStandard"]["updateStandard"], Error, Parameters>[0], unknown >; } export function useSport(): SportOperation { const queryClient = useQueryClient(); const queryKey = getQueryKey(api.sportProject); const queryKeyStandard = getQueryKey(api.sportStandard.createStandard); const createSportProject = api.sportProject.create.useMutation({ onSuccess: (result) => { queryClient.invalidateQueries({ queryKey }); emitDataChange(ObjectType.SPORT_PROJECT, result, CrudOperation.CREATED); }, }); const createSportStandard = api.sportStandard.createStandard.useMutation({ onSuccess: (result) => { queryClient.invalidateQueries({ queryKey: queryKeyStandard }); emitDataChange(ObjectType.SPORT_STANDARD, result, CrudOperation.CREATED); }, }); const softDeleteByIds = api.sportProject.softDeleteByIds.useMutation({ onSuccess: (result) => { queryClient.invalidateQueries({ queryKey }); emitDataChange(ObjectType.SPORT_PROJECT, result, CrudOperation.DELETED); }, }); const updateSportStandard = api.sportStandard.updateStandard.useMutation({ onSuccess: (result) => { queryClient.invalidateQueries({ queryKey: queryKeyStandard }); emitDataChange(ObjectType.SPORT_STANDARD, result, CrudOperation.UPDATED); }, }); return { createSportProject: createSportProject as any as UseTRPCMutationResult[0], unknown>, createSportStandard: createSportStandard as any as UseTRPCMutationResult>[0], unknown>, softDeleteByIds: softDeleteByIds as any as UseTRPCMutationResult[0], unknown>, updateSportStandard: updateSportStandard as any as UseTRPCMutationResult>[0], unknown>, }; }