import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query' import { api } from './client' export interface RackItem { id: number object_id: number name: string description: string | null location: string | null zone_id: number | null zone_name: string | null created_at: string } export const useRacks = (objId: number) => useQuery({ queryKey: ['racks', objId], queryFn: () => api.get(`/api/v1/objects/${objId}/racks`).then((r) => r.data), }) export const useCreateRack = (objId: number) => { const qc = useQueryClient() return useMutation({ mutationFn: (body: { name: string; description?: string; location?: string; zone_id?: number | null }) => api.post(`/api/v1/objects/${objId}/racks`, body).then((r) => r.data), onSuccess: () => qc.invalidateQueries({ queryKey: ['racks', objId] }), }) } export const useUpdateRack = (objId: number) => { const qc = useQueryClient() return useMutation({ mutationFn: ({ id, body }: { id: number; body: Partial<{ name: string; description: string; location: string; zone_id: number | null }> }) => api.patch(`/api/v1/objects/${objId}/racks/${id}`, body).then((r) => r.data), onSuccess: () => qc.invalidateQueries({ queryKey: ['racks', objId] }), }) } export const useDeleteRack = (objId: number) => { const qc = useQueryClient() return useMutation({ mutationFn: (id: number) => api.delete(`/api/v1/objects/${objId}/racks/${id}`), onSuccess: () => { qc.invalidateQueries({ queryKey: ['racks', objId] }) qc.invalidateQueries({ queryKey: ['devices', objId] }) }, }) }