From 0aca72af532dab56914f593961bfb4ff8d91164c Mon Sep 17 00:00:00 2001 From: rene Date: Thu, 21 May 2026 20:03:55 +0200 Subject: [PATCH] Fix: autor_name denormalisiert speichern statt expand (viewRule-Konflikt) --- app/src/lib/types.ts | 2 +- app/src/routes/(app)/neuigkeiten/+page.svelte | 9 ++++----- .../1779230902_neuigkeiten_autorname.js | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 pocketbase/pb_migrations/1779230902_neuigkeiten_autorname.js diff --git a/app/src/lib/types.ts b/app/src/lib/types.ts index 067d0e6..159b98b 100644 --- a/app/src/lib/types.ts +++ b/app/src/lib/types.ts @@ -48,12 +48,12 @@ export interface Neuigkeit { id: string; verein_id: string; autor_id: string; + autor_name?: string; text?: string; medien: string[]; gruppe_ids: string[]; termin_id?: string; created: string; - expand?: { autor_id?: { id: string; name: string } }; } export interface Reaktion { diff --git a/app/src/routes/(app)/neuigkeiten/+page.svelte b/app/src/routes/(app)/neuigkeiten/+page.svelte index e5df778..ceb735b 100644 --- a/app/src/routes/(app)/neuigkeiten/+page.svelte +++ b/app/src/routes/(app)/neuigkeiten/+page.svelte @@ -33,7 +33,7 @@ // Queries einzeln damit ein Fehler sichtbar wird const [nList, gList] = await Promise.all([ pb.collection('neuigkeiten').getFullList({ - sort: '-created', expand: 'autor_id', + sort: '-created', }), pb.collection('gruppen').getFullList({ sort: 'name' }), ]); @@ -100,6 +100,7 @@ const form = new FormData(); form.append('verein_id', vid); form.append('autor_id', userId()); + form.append('autor_name', pb.authStore.record?.name ?? ''); if (fText.trim()) form.append('text', fText.trim()); if (fTerminId) form.append('termin_id', fTerminId); for (const id of fGruppeIds) form.append('gruppe_ids', id); @@ -107,9 +108,7 @@ for (const file of Array.from(fDateien)) form.append('medien', file); } - const neu = await pb.collection('neuigkeiten').create(form, { - expand: 'autor_id', - }); + const neu = await pb.collection('neuigkeiten').create(form); neuigkeiten = [neu, ...neuigkeiten]; showForm = false; fText = ''; fGruppeIds = []; fTerminId = ''; fDateien = null; previews = []; @@ -161,7 +160,7 @@ } function autorName(n: Neuigkeit): string { - return (n.expand?.autor_id?.name) ?? 'Unbekannt'; + return n.autor_name || 'Unbekannt'; } function terminName(id: string): string { diff --git a/pocketbase/pb_migrations/1779230902_neuigkeiten_autorname.js b/pocketbase/pb_migrations/1779230902_neuigkeiten_autorname.js new file mode 100644 index 0000000..c49067f --- /dev/null +++ b/pocketbase/pb_migrations/1779230902_neuigkeiten_autorname.js @@ -0,0 +1,14 @@ +/// +migrate((app) => { + const c = app.findCollectionByNameOrId("pbc_neuigkeiten") + c.fields.addAt(99, new Field({ + "type": "text", "id": "text2001000206", "name": "autor_name", + "help": "", "hidden": false, "presentable": false, "required": false, "system": false, + "autogeneratePattern": "", "min": 0, "max": 0, "pattern": "" + })) + app.save(c) +}, (app) => { + const c = app.findCollectionByNameOrId("pbc_neuigkeiten") + c.fields.removeById("text2001000206") + app.save(c) +})