import { sql, type Expression, type SqlBool } from "kysely"; // Wen jemand hinzugewählt hat — die eine Regel hinter zwei Listen. // // Bis September 2026 galt die Auswahl nur für die Notizen in der Glocke; sie // hiess deshalb `note_subscriptions` und die Bedingung stand in lib/notes.ts. // Seit die Entwürfe derselben Auswahl folgen, steht sie hier: zwei Fassungen // derselben Regel driften auseinander, und dann zeigte die eine Liste // jemanden, den die andere nicht kennt. /** * Ob `spalte` auf eine hinzugewählte Person zeigt. * * `spalte` ist der Name der Verfasserspalte in der umgebenden Abfrage * (`n.author_user_id`, `d.created_by`, …) — als Bezeichner eingesetzt, nicht * als Wert. Er kommt aus dem Quelltext, nie aus einer Eingabe; die Kennung * dagegen kommt aus der Sitzung und geht als Parameter mit. * * Die eigene Person steht bewusst **nicht** darin. Wer sich selbst sieht, ist * keine Frage der Auswahl, sondern die Vorgabe — und die Prüfbedingung * `chk_kollegen_abos_nicht_selbst` lässt ein Abo auf sich selbst gar nicht zu. * Die aufrufende Abfrage stellt „die eigenen" davor, mit ODER. */ export function istHinzugewaehlt(userId: string, spalte: string): Expression { return sql`exists ( select 1 from colleague_subscriptions s where s.user_id = ${userId} and s.author_user_id = ${sql.ref(spalte)})`; }