import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { coolifyApi } from '@/lib/api'; import { queryKeys } from '@/lib/query-keys'; export function useCoolifyApps() { return useQuery({ queryKey: queryKeys.coolify.apps, queryFn: () => coolifyApi.listApps(), staleTime: 30_000, }); } export function useCoolifyServers() { return useQuery({ queryKey: queryKeys.coolify.servers, queryFn: () => coolifyApi.listServers(), staleTime: 60_000, }); } export function useCoolifyNextPort() { return useQuery({ queryKey: queryKeys.coolify.nextPort, queryFn: () => coolifyApi.getNextPort(), staleTime: 30_000, }); } export function useCoolifyDeploy() { const qc = useQueryClient(); return useMutation({ mutationFn: (uuid) => coolifyApi.deploy(uuid), onSuccess: () => qc.invalidateQueries({ queryKey: queryKeys.coolify.apps }), }); } export function useCoolifyUpsert() { const qc = useQueryClient(); return useMutation({ mutationFn: ({ projectPath, appName }) => coolifyApi.upsert(projectPath, appName), onSuccess: () => { qc.invalidateQueries({ queryKey: queryKeys.coolify.apps }); qc.invalidateQueries({ queryKey: queryKeys.coolify.nextPort }); }, }); } export function useCoolifyDelete() { const qc = useQueryClient(); return useMutation({ mutationFn: (uuid) => coolifyApi.deleteApp(uuid), onSuccess: () => qc.invalidateQueries({ queryKey: queryKeys.coolify.apps }), }); }