import type { Tx } from "./db"; 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). // // Früher zwei Abfragen, in JavaScript zusammengeführt, weil die API-Schicht // für eine einzelne verschachtelte Abfrage keine Verknüpfung anbot. Am // direkten Zugang ist es schlicht ein Join. export async function loadOpenNotes(tx: Tx): Promise { const rows = await tx .selectFrom("employee_notes as n") .leftJoin("employees as e", "e.id", "n.employee_id") .selectAll("n") .select(["e.first_name", "e.last_name"]) .where("n.done", "=", false) .orderBy("n.created_at", "desc") .execute(); return rows.map((row) => { const { first_name, last_name, ...note } = row; return { ...(note as Database["public"]["Tables"]["employee_notes"]["Row"]), employeeName: first_name && last_name ? `${first_name} ${last_name}` : "Unbekannt", }; }); }