Files
API/src/models/feedback/admin/admin.interface.ts
T
Paddy 3c892d02ed
Jenkins Production Deployment
Put the feedback and tickets admin areas behind the shared identity (#13)
Reviewed-on: #13
Co-authored-by: Patrick Müller <mail@pmueller.me>
Co-committed-by: Patrick Müller <mail@pmueller.me>
2026-09-06 19:06:30 +00:00

124 lines
2.9 KiB
TypeScript

/**
* @swagger
* components:
* schemas:
* EventAdminSummary:
* type: object
* properties:
* eventId:
* type: integer
* slug:
* type: string
* name:
* type: string
* subtitle:
* type: string
* nullable: true
* eventDate:
* type: string
* format: date
* feedbackDeadline:
* type: string
* format: date-time
* posterImageUrl:
* type: string
* nullable: true
* isPublished:
* type: boolean
* submissionCount:
* type: integer
* EventAdminDetail:
* allOf:
* - $ref: '#/components/schemas/EventAdminSummary'
* - type: object
* properties:
* introText:
* type: string
* nullable: true
* songs:
* type: array
* items:
* $ref: '#/components/schemas/Song'
* questions:
* type: array
* items:
* type: object
* properties:
* eventQuestionId:
* type: integer
* questionId:
* type: integer
* position:
* type: integer
* isActive:
* type: boolean
* AdminQuestion:
* type: object
* properties:
* questionId:
* type: integer
* label:
* type: string
* helpText:
* type: string
* nullable: true
* questionType:
* $ref: '#/components/schemas/QuestionType'
* isArchived:
* type: boolean
*/
import {QuestionType, Song} from '../feedback.interface.js';
export interface EventAdminSummary {
eventId: number;
slug: string;
name: string;
subtitle: string | null;
eventDate: string;
feedbackDeadline: string;
posterImageUrl: string | null;
isPublished: boolean;
submissionCount: number;
}
export interface EventAdminQuestionAssignment {
eventQuestionId: number;
questionId: number;
position: number;
isActive: boolean;
}
export interface EventAdminDetail extends EventAdminSummary {
introText: string | null;
songs: Song[];
questions: EventAdminQuestionAssignment[];
}
export interface CreateEventInput {
name: string;
subtitle?: string;
eventDate: string;
feedbackDeadline?: string;
introText?: string;
posterImageUrl?: string;
}
export interface UpdateEventInput {
name?: string;
subtitle?: string;
eventDate?: string;
feedbackDeadline?: string;
isPublished?: boolean;
introText?: string;
posterImageUrl?: string;
}
export interface AdminQuestion {
questionId: number;
label: string;
helpText: string | null;
questionType: QuestionType;
isArchived: boolean;
}