71 lines
3.7 KiB
TypeScript
71 lines
3.7 KiB
TypeScript
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<typeof api.sportProject.create.useMutation>[0],
|
|
unknown
|
|
>;
|
|
createSportStandard: UseTRPCMutationResult<
|
|
RouterOutputs["sportStandard"]["createStandard"],
|
|
Error, Parameters<typeof api.sportStandard.createStandard.useMutation<RouterOutputs["sportStandard"]["createStandard"]>>[0],
|
|
unknown
|
|
>;
|
|
softDeleteByIds: UseTRPCMutationResult<
|
|
RouterOutputs["sportProject"]["softDeleteByIds"],
|
|
Error,
|
|
Parameters<typeof api.sportProject.softDeleteByIds.useMutation>[0],
|
|
unknown
|
|
>;
|
|
updateSportStandard: UseTRPCMutationResult<
|
|
RouterOutputs["sportStandard"]["updateStandard"],
|
|
Error,
|
|
Parameters<typeof api.sportStandard.updateStandard.useMutation<RouterOutputs["sportStandard"]["updateStandard"]>>[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<RouterOutputs["sportStandard"]["createStandard"]>({
|
|
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<RouterOutputs["sportStandard"]["updateStandard"]>({
|
|
onSuccess: (result) => {
|
|
queryClient.invalidateQueries({ queryKey: queryKeyStandard });
|
|
emitDataChange(ObjectType.SPORT_STANDARD, result, CrudOperation.UPDATED);
|
|
},
|
|
});
|
|
|
|
return {
|
|
createSportProject: createSportProject as any as UseTRPCMutationResult<RouterOutputs["sportProject"]["create"], Error, Parameters<typeof api.sportProject.create.useMutation>[0], unknown>,
|
|
createSportStandard: createSportStandard as any as UseTRPCMutationResult<RouterOutputs["sportStandard"]["createStandard"], Error, Parameters<typeof api.sportStandard.createStandard.useMutation<RouterOutputs["sportStandard"]["createStandard"]>>[0], unknown>,
|
|
softDeleteByIds: softDeleteByIds as any as UseTRPCMutationResult<RouterOutputs["sportProject"]["softDeleteByIds"], Error, Parameters<typeof api.sportProject.softDeleteByIds.useMutation>[0], unknown>,
|
|
updateSportStandard: updateSportStandard as any as UseTRPCMutationResult<RouterOutputs["sportStandard"]["updateStandard"], Error, Parameters<typeof api.sportStandard.updateStandard.useMutation<RouterOutputs["sportStandard"]["updateStandard"]>>[0], unknown>,
|
|
};
|
|
} |