import { useEffect, useState } from "preact/hooks"; interface Promotion { id: number; name: string; } interface Student { userId: string; firstName: string; lastName: string; mail: string; promotionId: number; } export default function ConsultStudents() { const [data, setData] = useState< { promotions: Promotion[]; students: Student[] } | null >(null); const [error, setError] = useState(null); useEffect(() => { const fetchData = async () => { try { const response = await fetch("/students/api/insert_students"); if (!response.ok) { throw new Error(`Error fetching data: ${response.statusText}`); } const result = await response.json(); console.log("Fetched data:", result); setData(result); } catch (err) { console.error("Error fetching data:", err); setError("Failed to load data. Please try again later."); } }; fetchData(); }, []); return (

Consult Students

{error &&

{error}

} {data?.promotions.map((promo) => (

Promotion: {promo.name}

{data.students .filter((student) => student.promotionId === promo.id) .map((student) => ( ))}
ID First Name Last Name Email
{student.userId} {student.firstName} {student.lastName} {student.mail}
))}
); }