Backend: openapi.yaml um FormFieldOption-Schema mit Preis (Integer-Cents) erweitert #134

Closed
opened 2026-06-28 14:43:30 +02:00 by niboer · 0 comments
Owner

Beschreibung

Das openapi.yaml-Schema muss um die neuen Feld-Typen radio (Either/Or) und checkbox (Multiselection) mit bepreisten Optionen erweitert werden. Preise werden als Integer-Cents (z. B. 15000 = EUR 150,00) gespeichert.

Aenderungen in backend/openapi.yaml

  1. Neues Schema FormFieldOption:
FormFieldOption:
  type: object
  properties:
    label:
      type: string
    price:
      type: integer
      minimum: 0
      description: Preis in Cent (z.B. 15000 = 150,00 EUR)
  required:
    - label
    - price
  1. Event.formDefinition: items von type: object auf oneOf mit discriminated type (text|number|date|select|radio|checkbox) umstellen

    • select: options als string[]
    • radio, checkbox: options als FormFieldOption[]
  2. Template.formDefinition: gleiche Anpassung wie Event

  3. Guest.formFinal, Invitation.formFinal: Typ von Record<string, string> auf Record<string, unknown> (checkbox-Werte sind Arrays)

Auswirkung

Keine DB-Migration noetig (JSONB-Struktur). Backend-Routes bleiben unveraendert (speichern JSON durch). Orval generiert die neuen Typen fuer das Frontend.

Referenzen

  • Frontend-Issue #135 (UI fuer Preisoptionen)
  • Gehoert zu MS-FE-4 (#104)

Abhaengigkeiten

  • Nach diesem Issue: npm run generate:api im Frontend ausfuehren
## Beschreibung Das openapi.yaml-Schema muss um die neuen Feld-Typen `radio` (Either/Or) und `checkbox` (Multiselection) mit bepreisten Optionen erweitert werden. Preise werden als Integer-Cents (z. B. 15000 = EUR 150,00) gespeichert. ### Aenderungen in `backend/openapi.yaml` 1. Neues Schema `FormFieldOption`: ```yaml FormFieldOption: type: object properties: label: type: string price: type: integer minimum: 0 description: Preis in Cent (z.B. 15000 = 150,00 EUR) required: - label - price ``` 2. `Event.formDefinition`: items von `type: object` auf `oneOf` mit discriminated type (`text|number|date|select|radio|checkbox`) umstellen - `select`: `options` als `string[]` - `radio`, `checkbox`: `options` als `FormFieldOption[]` 3. `Template.formDefinition`: gleiche Anpassung wie Event 4. `Guest.formFinal`, `Invitation.formFinal`: Typ von `Record<string, string>` auf `Record<string, unknown>` (checkbox-Werte sind Arrays) ### Auswirkung Keine DB-Migration noetig (JSONB-Struktur). Backend-Routes bleiben unveraendert (speichern JSON durch). Orval generiert die neuen Typen fuer das Frontend. ### Referenzen - Frontend-Issue #135 (UI fuer Preisoptionen) - Gehoert zu MS-FE-4 (#104) ### Abhaengigkeiten - Nach diesem Issue: `npm run generate:api` im Frontend ausfuehren
Sign in to join this conversation.
No description provided.