changemaker.lite/api/src/modules/people/participant-needs.schemas.ts

36 lines
1.3 KiB
TypeScript

import { z } from 'zod';
export const upsertNeedsSchema = z.object({
needsWheelchair: z.boolean().optional(),
needsGroundFloor: z.boolean().optional(),
needsHearingLoop: z.boolean().optional(),
needsSignLanguage: z.boolean().optional(),
otherAccessibility: z.string().max(1000).nullable().optional(),
isVegan: z.boolean().optional(),
isVegetarian: z.boolean().optional(),
isGlutenFree: z.boolean().optional(),
isHalal: z.boolean().optional(),
isKosher: z.boolean().optional(),
hasNutAllergy: z.boolean().optional(),
otherDietary: z.string().max(1000).nullable().optional(),
needsChildcare: z.boolean().optional(),
childcareDetails: z.string().max(1000).nullable().optional(),
needsTransportation: z.boolean().optional(),
transportationNotes: z.string().max(1000).nullable().optional(),
preferredLanguage: z.string().max(10).nullable().optional(),
needsTranslation: z.boolean().optional(),
translationLanguage: z.string().max(100).nullable().optional(),
visibilityConsent: z.enum(['organizer_only', 'shared_with_hosts', 'public']).default('organizer_only'),
});
export const getNeedsSchema = z.object({
id: z.string().min(1),
});
export type UpsertNeedsInput = z.infer<typeof upsertNeedsSchema>;
export type GetNeedsInput = z.infer<typeof getNeedsSchema>;