import { useQuery } from '@tanstack/react-query';
import axiosClient from './axiosClient';
import { addToast } from '../features/toast/toastSlice';
import { useDispatch } from 'react-redux';

const REFETCH_INTERVAL = 15000; // ดึงข้อมูลใหม่ทุก 15 วินาที

/**
 * Hook สำหรับดึงสถานะ Health Check ของระบบทั้งหมด
 * Endpoint: GET /api/v1/health/
 */
export const useSystemHealth = () => {
    const dispatch = useDispatch();

    return useQuery({
        queryKey: ['systemHealth'],
        queryFn: async () => {
            const response = await axiosClient.get('/api/v1/health/');

            // แจ้งเตือนเมื่อสถานะกลับมา UP จาก Degraded
            if (response.data.status === 'Healthy') {
                // dispatch(addToast({ message: 'System Health Status: Healthy', type: 'info' }));
            }
            return response.data;
        },
        // ตั้งค่า Polling ให้ดึงข้อมูลใหม่ทุก 15 วินาที
        refetchInterval: REFETCH_INTERVAL,
        staleTime: 5000,

        // จัดการ Error เมื่อไม่สามารถเชื่อมต่อ API ได้เลย (เช่น 500 หรือ Network Failure)
        onError: () => {
            dispatch(addToast({ message: 'Network Error: Could not reach Health API', type: 'error' }));
        }
    });
};