BE: Gaeste- und Event-Endpunkte um ?include=person/?include=creator erweitern #170

Closed
opened 2026-07-02 20:06:29 +02:00 by niboer · 0 comments
Owner

Beschreibung

  1. GET /api/v1/events/{event_id}/guests um ?include=person erweitern (Personendaten pro Gast inline)
  2. GET /api/v1/events um ?include=creator erweitern (Ersteller pro Event inline)

Motivation / Anwendungsfall

Gaesteliste: Das Frontend zeigt auf der Event-Detailseite eine Gasterliste mit Namen. Aktuell liefert /guests nur personId — fuer jeden Gast ist ein separater GET /api/v1/persons/{id}-Call noetig (N+1).

Event-Liste: Die Dashboard-/Events-Uebersicht zeigt den Ersteller-Namen. GET /api/v1/events liefert kein Creator-Objekt — es braucht N zusaetzliche Person-Queries.

Vorgeschlagene Umsetzung

OpenAPI:

parameters:
  - name: include
    in: query
    schema:
      type: string
      enum: [person]
    description: Komma-separierte Liste von zu inkludierenden Relationen
  • GuestWithPerson-Schema (EventGuest + person mit personId/firstName/lastName)
  • Analog fuer ?include=creator an GET /api/v1/events
  • EventWithCreator-Schema

Backend:

  • guests.ts: querystring um include ergaenzen; bei include: 'person' Person-Daten via include: { person: { select: { personId, firstName, lastName } } } inline laden
  • events.ts: Bei ?include=creator den creator via include: { creator: { select: { personId, firstName, lastName } } } inline laden

Alternativen

  • Standardmaessig immer Person/Creator mitsenden — mehr Bandbreite, aber einfacher

Labels

component/backend, prio/high, type/feature

Meilenstein

MS-REST (#32)

### Beschreibung 1. `GET /api/v1/events/{event_id}/guests` um `?include=person` erweitern (Personendaten pro Gast inline) 2. `GET /api/v1/events` um `?include=creator` erweitern (Ersteller pro Event inline) ### Motivation / Anwendungsfall **Gaesteliste:** Das Frontend zeigt auf der Event-Detailseite eine Gasterliste mit Namen. Aktuell liefert `/guests` nur `personId` — fuer jeden Gast ist ein separater `GET /api/v1/persons/{id}`-Call noetig (N+1). **Event-Liste:** Die Dashboard-/Events-Uebersicht zeigt den Ersteller-Namen. `GET /api/v1/events` liefert kein Creator-Objekt — es braucht N zusaetzliche Person-Queries. ### Vorgeschlagene Umsetzung **OpenAPI:** ```yaml parameters: - name: include in: query schema: type: string enum: [person] description: Komma-separierte Liste von zu inkludierenden Relationen ``` - `GuestWithPerson`-Schema (EventGuest + person mit personId/firstName/lastName) - Analog fuer `?include=creator` an `GET /api/v1/events` - `EventWithCreator`-Schema **Backend:** - `guests.ts`: `querystring` um `include` ergaenzen; bei `include: 'person'` Person-Daten via `include: { person: { select: { personId, firstName, lastName } } }` inline laden - `events.ts`: Bei `?include=creator` den `creator` via `include: { creator: { select: { personId, firstName, lastName } } }` inline laden ### Alternativen - Standardmaessig immer Person/Creator mitsenden — mehr Bandbreite, aber einfacher ### Labels component/backend, prio/high, type/feature ### Meilenstein MS-REST (#32)
Sign in to join this conversation.
No description provided.