59 lines
1.4 KiB
TypeScript
59 lines
1.4 KiB
TypeScript
import * as api from "../service/AdminService";
|
|
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
|
|
import type { GetAdminsParams, CreateAdminType } from "../types/Types";
|
|
|
|
export const useGetAdmins = (params?: GetAdminsParams) => {
|
|
return useQuery({
|
|
queryKey: ["admins", params],
|
|
queryFn: () => api.getAdmins(params),
|
|
});
|
|
};
|
|
|
|
export const useDeleteAdmin = () => {
|
|
const queryClient = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: api.deleteAdmin,
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({
|
|
queryKey: ["admins"],
|
|
});
|
|
},
|
|
});
|
|
};
|
|
|
|
export const useCreateAdmin = () => {
|
|
const queryClient = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: api.createAdmin,
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({
|
|
queryKey: ["admins"],
|
|
});
|
|
},
|
|
});
|
|
};
|
|
|
|
export const useUpdateAdmin = () => {
|
|
const queryClient = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: ({ id, params }: { id: string; params: CreateAdminType }) =>
|
|
api.updateAdmin(id, params),
|
|
onSuccess: (_, { id }) => {
|
|
queryClient.invalidateQueries({
|
|
queryKey: ["admins"],
|
|
});
|
|
queryClient.invalidateQueries({
|
|
queryKey: ["admins", id],
|
|
});
|
|
},
|
|
});
|
|
};
|
|
|
|
export const useGetAdminById = (id: string) => {
|
|
return useQuery({
|
|
queryKey: ["admin", id],
|
|
queryFn: () => api.getAdminById(id),
|
|
enabled: !!id,
|
|
});
|
|
};
|