training_data/packages/client/src/api/hooks/useSport.ts

33 lines
2.0 KiB
TypeScript
Raw Normal View History

2025-03-25 09:38:38 +08:00
import { getQueryKey } from "@trpc/react-query";
2025-03-25 10:46:28 +08:00
import { api, RouterOutputs } from "../trpc"; // Adjust path as necessary
import { useQueryClient, UseMutationResult } from "@tanstack/react-query";
2025-03-25 09:38:38 +08:00
import { ObjectType } from "@nice/common";
import { CrudOperation, emitDataChange } from "../../event";
2025-03-25 10:46:28 +08:00
interface SportOperation {
createSportProject: UseMutationResult<RouterOutputs["sportProject"]["create"], Error, Parameters<typeof api.sportProject.create.useMutation>[0], unknown>;
createSportStandard: UseMutationResult<RouterOutputs["sportStandard"]["createStandard"], Error, Parameters<typeof api.sportStandard.createStandard.useMutation<RouterOutputs["sportStandard"]["createStandard"]>>[0], unknown>;
}
export function useSport(): SportOperation {
2025-03-25 09:38:38 +08:00
const queryClient = useQueryClient();
const queryKey = getQueryKey(api.sportProject);
2025-03-25 10:46:28 +08:00
const queryKeyStandard = getQueryKey(api.sportStandard.createStandard);
2025-03-25 09:38:38 +08:00
const createSportProject = api.sportProject.create.useMutation({
2025-03-25 10:46:28 +08:00
onSuccess: (result) => {
queryClient.invalidateQueries({ queryKey });
emitDataChange(ObjectType.SPORT_PROJECT, result, CrudOperation.CREATED);
},
2025-03-25 09:38:38 +08:00
});
2025-03-25 10:46:28 +08:00
const createSportStandard = api.sportStandard.createStandard.useMutation<RouterOutputs["sportStandard"]["createStandard"]>({
2025-03-25 09:38:38 +08:00
onSuccess: (result) => {
queryClient.invalidateQueries({ queryKey: queryKeyStandard });
emitDataChange(ObjectType.SPORT_STANDARD, result, CrudOperation.CREATED);
},
});
return {
2025-03-25 10:46:28 +08:00
createSportProject: createSportProject as any as UseMutationResult<RouterOutputs["sportProject"]["create"], Error, Parameters<typeof api.sportProject.create.useMutation>[0], unknown>,
createSportStandard: createSportStandard as any as UseMutationResult<RouterOutputs["sportStandard"]["createStandard"], Error, Parameters<typeof api.sportStandard.createStandard.useMutation<RouterOutputs["sportStandard"]["createStandard"]>>[0], unknown>,
2025-03-25 09:38:38 +08:00
};
2025-03-25 10:46:28 +08:00
}