Let the same choice open notes and drafts
The picker in the bell now governs both lists, so note_subscriptions is renamed to colleague_subscriptions -- a name that only mentions notes would mislead the next reader. Reading and writing a draft now reach differently far. hire_drafts_owner (for all) is split into four policies: select lets in your own drafts and those of the people you added, while insert/update/delete stay with the owner. A draft is unfinished work with no lock and no history; two people writing into the same row would overwrite each other silently. That split forces a change in the actions: a policy does not reject a write, it lets it hit no rows. saveHireDraft and deleteHireDraft now read the row count instead of reporting success over a row that never changed. The card shows a foreign draft with its author and without Fortsetzen or Loeschen -- offering a button that reliably ends in a database error is a promise without cover. check-schema-types.mjs learns `alter table ... rename to`; without it the drift check reports one rename as two errors. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -577,8 +577,8 @@ export type Database = {
|
||||
// Einbettung erspart an einem Dutzend Stellen eine zweite Abfrage.
|
||||
};
|
||||
// Hinzugewählte Kolleg:innen je Person. Eine Zeile holt deren Notizen
|
||||
// in die Glocke; ohne Zeile sieht man nur die eigenen.
|
||||
note_subscriptions: {
|
||||
// und Entwürfe in die Ansicht; ohne Zeile sieht man nur die eigenen.
|
||||
colleague_subscriptions: {
|
||||
Row: {
|
||||
user_id: string;
|
||||
author_user_id: string;
|
||||
@@ -589,7 +589,7 @@ export type Database = {
|
||||
author_user_id: string;
|
||||
created_at?: string;
|
||||
};
|
||||
Update: Partial<Database["public"]["Tables"]["note_subscriptions"]["Insert"]>;
|
||||
Update: Partial<Database["public"]["Tables"]["colleague_subscriptions"]["Insert"]>;
|
||||
};
|
||||
};
|
||||
Views: Record<string, never>;
|
||||
|
||||
Reference in New Issue
Block a user