import type { SupabaseClient } from "@supabase/supabase-js"; import { fetchAllRows } from "./supabase/query"; import type { Database } from "./supabase/types"; export type OpenNote = Database["public"]["Tables"]["employee_notes"]["Row"] & { employeeName: string; }; // "Meine Notizen" (Topbar-Glocke): das geteilte, mitarbeiterübergreifende // Postfach aller noch nicht erledigten HR-Notizen — unabhängig davon wer // sie verfasst hat oder zu wem sie gehören (mit Nutzer abgestimmt). Zwei // einfache Queries, in JS gemerged — gleiches Muster wie loadEventHistory // in lib/reports-data.ts, da der handgeschriebene Database-Typ keine // relationalen Embeddings für eine einzelne verschachtelte Query kennt. export async function loadOpenNotes(supabase: SupabaseClient): Promise { const [{ data: notes }, employees] = await Promise.all([ supabase.from("employee_notes").select("*").eq("done", false).order("created_at", { ascending: false }), fetchAllRows(() => supabase.from("employees").select("id, first_name, last_name").order("id")), ]); const employeeById = new Map(employees.map((e) => [e.id, e])); return (notes ?? []).map((n) => { const emp = employeeById.get(n.employee_id); return { ...n, employeeName: emp ? `${emp.first_name} ${emp.last_name}` : "Unbekannt" }; }); }