staff_data/packages/client/src/api/hooks/useRoleMap.ts

48 lines
1.3 KiB
TypeScript
Raw Normal View History

2024-12-30 08:26:40 +08:00
import { getQueryKey } from "@trpc/react-query";
import { api } from "../trpc"; // Adjust path as necessary
import { useQueryClient } from "@tanstack/react-query";
import { CrudOperation, emitDataChange, EventBus } from "../../event";
2025-01-06 08:45:23 +08:00
import { ObjectType } from "@nice/common";
2024-12-30 08:26:40 +08:00
export function useRoleMap() {
const queryClient = useQueryClient();
const queryKey = getQueryKey(api.rolemap);
const create = api.rolemap.setRoleForObject.useMutation({
onSuccess: () => {
queryClient.invalidateQueries({ queryKey });
},
});
const setRoleForObjects = api.rolemap.setRoleForObjects.useMutation({
onSuccess: () => {
queryClient.invalidateQueries({ queryKey });
},
});
const addRoleForObjects = api.rolemap.addRoleForObjects.useMutation({
onSuccess: (result) => {
queryClient.invalidateQueries({ queryKey });
emitDataChange(ObjectType.ROLE_MAP, result as any, CrudOperation.CREATED)
},
});
const update = api.rolemap.update.useMutation({
onSuccess: () => {
queryClient.invalidateQueries({ queryKey });
},
});
const deleteMany = api.rolemap.deleteMany.useMutation({
onSuccess: (result) => {
queryClient.invalidateQueries({ queryKey });
emitDataChange(ObjectType.ROLE_MAP, result as any, CrudOperation.DELETED)
},
});
return {
create,
update,
setRoleForObjects,
deleteMany,
addRoleForObjects
};
}