b05f6b9da0
Jenkins Production Deployment
Co-authored-by: Patrick Müller <mail@pmueller.me> Reviewed-on: #7 Co-authored-by: Patrick Mueller <patrick@mueller-patrick.tech> Co-committed-by: Patrick Mueller <patrick@mueller-patrick.tech>
131 lines
3.3 KiB
TypeScript
131 lines
3.3 KiB
TypeScript
/**
|
|
* @swagger
|
|
* components:
|
|
* schemas:
|
|
* QuestionType:
|
|
* type: string
|
|
* enum: [SONG_PICK, SONG_RATING, FREE_TEXT]
|
|
* Song:
|
|
* type: object
|
|
* required: [songId, title, position]
|
|
* properties:
|
|
* songId:
|
|
* type: integer
|
|
* example: 44
|
|
* title:
|
|
* type: string
|
|
* example: "Abendlied"
|
|
* composer:
|
|
* type: string
|
|
* nullable: true
|
|
* example: "Josef Rheinberger"
|
|
* position:
|
|
* type: integer
|
|
* example: 0
|
|
* Question:
|
|
* type: object
|
|
* required: [eventQuestionId, questionId, type, label, position]
|
|
* properties:
|
|
* eventQuestionId:
|
|
* type: integer
|
|
* example: 12
|
|
* questionId:
|
|
* type: integer
|
|
* example: 5
|
|
* type:
|
|
* $ref: '#/components/schemas/QuestionType'
|
|
* label:
|
|
* type: string
|
|
* example: "Welches Stück hat Sie am meisten berührt?"
|
|
* helpText:
|
|
* type: string
|
|
* nullable: true
|
|
* position:
|
|
* type: integer
|
|
* example: 0
|
|
* EventSummary:
|
|
* type: object
|
|
* required: [slug, name, eventDate, feedbackDeadline]
|
|
* properties:
|
|
* slug:
|
|
* type: string
|
|
* example: "sommerkonzert-2026"
|
|
* name:
|
|
* type: string
|
|
* example: "Sommerkonzert 2026"
|
|
* subtitle:
|
|
* type: string
|
|
* nullable: true
|
|
* eventDate:
|
|
* type: string
|
|
* format: date
|
|
* feedbackDeadline:
|
|
* type: string
|
|
* format: date-time
|
|
* posterImageUrl:
|
|
* type: string
|
|
* nullable: true
|
|
* example: "https://www.nachklang.art/img/nk/image-20260727-214855-851.jpeg"
|
|
* EventConfig:
|
|
* allOf:
|
|
* - $ref: '#/components/schemas/EventSummary'
|
|
* - type: object
|
|
* properties:
|
|
* introText:
|
|
* type: string
|
|
* nullable: true
|
|
* songs:
|
|
* type: array
|
|
* items:
|
|
* $ref: '#/components/schemas/Song'
|
|
* questions:
|
|
* type: array
|
|
* items:
|
|
* $ref: '#/components/schemas/Question'
|
|
* ProcessingError:
|
|
* type: object
|
|
* properties:
|
|
* status:
|
|
* type: string
|
|
* example: PROCESSING_ERROR
|
|
* message:
|
|
* type: string
|
|
* example: Internal Server Error. Try again later.
|
|
* reference:
|
|
* type: string
|
|
* example: 6ec1361c-4175-4e81-b2ef-a0792a9a1dc3
|
|
*/
|
|
|
|
export type QuestionType = 'SONG_PICK' | 'SONG_RATING' | 'FREE_TEXT';
|
|
|
|
export interface Song {
|
|
songId: number;
|
|
title: string;
|
|
composer: string | null;
|
|
position: number;
|
|
}
|
|
|
|
export interface Question {
|
|
eventQuestionId: number;
|
|
questionId: number;
|
|
type: QuestionType;
|
|
label: string;
|
|
helpText: string | null;
|
|
position: number;
|
|
}
|
|
|
|
export interface EventSummary {
|
|
slug: string;
|
|
name: string;
|
|
subtitle: string | null;
|
|
eventDate: string;
|
|
feedbackDeadline: string;
|
|
posterImageUrl: string | null;
|
|
}
|
|
|
|
export interface EventConfig extends EventSummary {
|
|
introText: string | null;
|
|
songs: Song[];
|
|
questions: Question[];
|
|
}
|