import { useQuery } from '@tanstack/react-query';
import { z } from 'zod';
import { apiFetch } from '../services/apiClient';

const PendingWordSchema = z.object({
  id: z.string().uuid(),
  text: z.string().min(1).max(255),
  createdAt: z.string().datetime(),
  status: z.enum(['active', 'to_be_defined']),
});

export type PendingWord = z.infer<typeof PendingWordSchema>;

const PagedPendingSchema = z.object({
  data: z.array(PendingWordSchema),
  total: z.number(),
  page: z.number(),
  limit: z.number(),
});

async function fetchPendingWords(): Promise<PendingWord[]> {
  const response = await apiFetch(`/words?status=to_be_defined&limit=100`);
  if (!response.ok) throw new Error(`HTTP error ${response.status}`);
  const raw: unknown = await response.json();
  return PagedPendingSchema.parse(raw).data;
}

/** Fetches all words with status 'to_be_defined'. */
export function usePendingWords() {
  return useQuery({
    queryKey: ['words', 'pending'],
    queryFn: fetchPendingWords,
  });
}
