import { useQuery } from "@tanstack/react-query";
import { createClient } from "@/utils/supabase/client";

/**
 * [사용자 정보 조회 쿼리]
 *
 * 현재 로그인한 사용자의 정보를 조회합니다.
 * - 자동 캐싱 및 재검증
 * - 로딩/에러 상태 자동 관리
 *
 * @example
 * ```tsx
 * import { useUserQuery } from '@/hooks/queries/use-user-query';
 *
 * function Profile() {
 *   const { data: user, isLoading, error } = useUserQuery();
 *
 *   if (isLoading) return <div>Loading...</div>;
 *   if (error) return <div>Error: {error.message}</div>;
 *   if (!user) return <div>Not logged in</div>;
 *
 *   return <div>Welcome, {user.email}</div>;
 * }
 * ```
 */
export function useUserQuery() {
  return useQuery({
    queryKey: ["user"],
    queryFn: async () => {
      const supabase = createClient();
      const {
        data: { user },
        error,
      } = await supabase.auth.getUser();

      if (error) throw error;
      return user;
    },
    staleTime: 5 * 60 * 1000, // 5분 - 사용자 정보는 자주 변경되지 않음
    retry: 1,
  });
}
