40 lines
890 B
TypeScript
40 lines
890 B
TypeScript
import vine from '@vinejs/vine'
|
|
|
|
const meals = vine.array(
|
|
vine.object({
|
|
date: vine.string(), // YYYY-MM-DD
|
|
meal_type: vine.string().in(['dinner', 'lunch']),
|
|
})
|
|
)
|
|
|
|
export const createMealValidator = vine.compile(
|
|
vine.union([
|
|
vine.union.if(
|
|
(data) => vine.helpers.isObject(data) && 'meals' in data,
|
|
vine.object({
|
|
meals,
|
|
})
|
|
),
|
|
vine.union.else(
|
|
vine.object({
|
|
date: vine.date(),
|
|
type: vine.string().in(['Déjeuner', 'Dîner']),
|
|
courses: vine
|
|
.array(
|
|
vine.object({
|
|
name: vine.string().minLength(1).maxLength(255),
|
|
description: vine.string().minLength(1),
|
|
})
|
|
)
|
|
.minLength(1),
|
|
})
|
|
),
|
|
])
|
|
)
|
|
|
|
export const updateMealsRegistrationsValidator = vine.compile(
|
|
vine.object({
|
|
userId: vine.number().min(1),
|
|
meals,
|
|
})
|
|
)
|