Files
myeasycms-v2/packages/features/event-management/src/schema/event.schema.ts
T. Zehetbauer c6b2824da8
Some checks failed
Workflow / ʦ TypeScript (push) Failing after 4m53s
Workflow / ⚫️ Test (push) Has been skipped
feat: add update and delete functionality for courses, events, and species; enhance attendance tracking and category creation
2026-04-01 16:03:50 +02:00

57 lines
1.7 KiB
TypeScript

import { z } from 'zod';
export const EventStatusEnum = z.enum([
'planned',
'open',
'full',
'running',
'completed',
'cancelled',
]);
export const CreateEventSchema = z.object({
accountId: z.string().uuid(),
name: z.string().min(1).max(256),
description: z.string().optional(),
eventDate: z.string(),
eventTime: z.string().optional(),
endDate: z.string().optional(),
location: z.string().optional(),
capacity: z.number().int().optional(),
minAge: z.number().int().optional(),
maxAge: z.number().int().optional(),
fee: z.number().min(0).default(0),
status: EventStatusEnum.default('planned'),
registrationDeadline: z.string().optional(),
contactName: z.string().optional(),
contactEmail: z.string().email().optional().or(z.literal('')),
contactPhone: z.string().optional(),
});
export type CreateEventInput = z.infer<typeof CreateEventSchema>;
export const UpdateEventSchema = CreateEventSchema.partial().extend({
eventId: z.string().uuid(),
});
export type UpdateEventInput = z.infer<typeof UpdateEventSchema>;
export const EventRegistrationSchema = z.object({
eventId: z.string().uuid(),
firstName: z.string().min(1),
lastName: z.string().min(1),
email: z.string().email().optional().or(z.literal('')),
phone: z.string().optional(),
dateOfBirth: z.string().optional(),
parentName: z.string().optional(),
parentPhone: z.string().optional(),
});
export const CreateHolidayPassSchema = z.object({
accountId: z.string().uuid(),
name: z.string().min(1),
year: z.number().int(),
description: z.string().optional(),
price: z.number().min(0).default(0),
validFrom: z.string().optional(),
validUntil: z.string().optional(),
});