import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import type { CreateUserInput, UpdateUserInput, ResetPasswordInput } from '@citytracker/shared'; import * as usersApi from '../api/users'; const USERS_KEY = ['users']; export function useUsers() { return useQuery({ queryKey: USERS_KEY, queryFn: usersApi.listUsers }); } export function useCreateUser() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (input: CreateUserInput) => usersApi.createUser(input), onSuccess: () => queryClient.invalidateQueries({ queryKey: USERS_KEY }), }); } export function useUpdateUser() { const queryClient = useQueryClient(); return useMutation({ mutationFn: ({ id, input }: { id: number; input: UpdateUserInput }) => usersApi.updateUser(id, input), onSuccess: () => queryClient.invalidateQueries({ queryKey: USERS_KEY }), }); } export function useResetPassword() { return useMutation({ mutationFn: ({ id, input }: { id: number; input: ResetPasswordInput }) => usersApi.resetPassword(id, input), }); } export function useDeleteUser() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (id: number) => usersApi.deleteUser(id), onSuccess: () => queryClient.invalidateQueries({ queryKey: USERS_KEY }), }); }