57 lines
1.7 KiB
TypeScript
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(),
|
|
});
|