Validation
Nous utilisons VineJS pour la validation de schéma haute performance.
Les validateurs sont définis dans app/Validators/.
Définir un Schéma
// app/Validators/camera.ts
import vine from "@vinejs/vine";
export const createCameraValidator = vine.compile(
vine.object({
name: vine.string().trim().minLength(3),
ip: vine.string().ip(),
rtspUsername: vine.string().optional(),
rtspPassword: vine.string().optional(),
}),
);
Utilisation dans le Contrôleur
La validation est stricte. Si elle échoue, la requête s'arrête immédiatement avec une 422 Unprocessable Entity.
import { createCameraValidator } from '#validators/camera'
public async store({ request }: HttpContext) {
// Valide automatiquement le body.
// 'payload' contient UNIQUEMENT les champs validés (pas de junk data).
const payload = await request.validateUsing(createCameraValidator)
await CameraService.create(payload)
}