BE: Personen-Endpunkte optimieren (?include=group, /me/summary, /me konsolidieren) #171
Labels
No labels
component/backend
component/docs
component/e2e
component/frontend
component/infra
component/keycloak
prio/high
prio/low
prio/medium
type/bug
type/chore
type/feature
type/refactor
type/test
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
WompSchmiede/FamilienFeierPlaner#171
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Beschreibung
Drei zusammengehoerige Optimierungen an den Personen-Endpunkten zur Reduktion von Frontend-API-Calls:
?include=groupanGET /api/v1/personsundGET /api/v1/persons/{person_id}GET /api/v1/persons/me/summary(Dashboard-Bundle)GET /api/v1/persons/mekonsolidieren (aktuell 2 DB-Queries → 1)Motivation / Anwendungsfall
?include=group: Es gibt keinen Reverse-Lookup Person→Gruppe via API. Das Frontend muss alle Groups durchprobieren, um die Gruppe einer Person zu finden. Da
GroupMember.personIdunique ist (1 Person = max 1 Gruppe), kann das Backend die Info inline liefern.Dashboard-Summary: Die Startseite macht 5+ separate API-Calls (person, invitations, events, groups, consent). Ein einziger
/me/summary-Endpunkt reduziert das auf 1 Call./me konsolidieren: Aktuell werden person + consent in zwei separaten Queries geladen. Ein
include: { contactData, consentsGiven: { take:1 } }reicht.Vorgeschlagene Umsetzung
OpenAPI:
Backend:
persons.ts: Bedingtesincludein Prisma-Query analog Gruppen-EndpunktenGET /me/summary: Neue Route, die eine einzige Prisma-Query mit allen Includes und einen parallelisierbarenPromise.all-Block fuer Invitations nutztLabels
component/backend, prio/medium, type/feature
Meilenstein
MS-REST (#32)