import { FreshContext } from "$fresh/server.ts"; import { db } from "$root/databases/db.ts"; import { students } from "$root/databases/schema.ts"; import { and, eq } from "npm:drizzle-orm@0.45.2"; import { getPartialsConfig, makePartials, } from "$root/defaults/makePartials.tsx"; import { CasContent, State } from "$root/defaults/interfaces.ts"; import NotesView from "../(_islands)/NotesView.tsx"; async function Notes( _request: Request, context: FreshContext, ) { const session = (context.state as unknown as { session: CasContent }).session; let numEtud: number | null = null; try { if (session.eduPersonPrimaryAffiliation === "student") { // Students: uid is "21212006" in AMU CAS — strip non-digit prefix const etudId = parseInt(session.uid.replace(/^\D+/, ""), 10); if (!isNaN(etudId)) { const student = await db .select() .from(students) .where(eq(students.numEtud, etudId)) .then((rows) => rows[0] ?? null); numEtud = student?.numEtud ?? null; } } else { // Employees: look up by nom/prenom const student = await db .select() .from(students) .where( and( eq(students.nom, session.sn), eq(students.prenom, session.givenName), ), ) .then((rows) => rows[0] ?? null); numEtud = student?.numEtud ?? null; } } catch { // DB lookup failed — island will show fallback message } return ( ); } export { Notes as Page }; export const config = getPartialsConfig(); export default makePartials(Notes);