import vine from '@vinejs/vine'

/**
 * POST /invoices/upload — V1 mock.
 *
 * Accepte un tableau de filenames (pas de fichiers réels). Quand on
 * branchera Mistral + MinIO, on switchera sur multipart `files[]` avec
 * upload effectif des PDFs. Le contrat côté SPA reste le même.
 */
export const uploadValidator = vine.create({
  filenames: vine.array(vine.string().minLength(1).maxLength(500)).minLength(1).maxLength(20),
})

/**
 * POST /invoices/import-batch/:id/drafts/:draftId/validate.
 *
 * Le SPA envoie les `edited` finaux (peut différer de `extracted` si
 * l'utilisateur a corrigé). On les normalise puis on crée l'invoice.
 */
export const validateDraftValidator = vine.create({
  clientId: vine.string().uuid().nullable(),
  clientName: vine.string().minLength(1).maxLength(120),
  clientEmail: vine.string().email().nullable(),
  numero: vine.string().minLength(1).maxLength(50),
  amountTtcCents: vine.number().min(1),
  issueDate: vine.string().regex(/^\d{4}-\d{2}-\d{2}T/),
  dueDate: vine.string().regex(/^\d{4}-\d{2}-\d{2}T/),
  planId: vine.string().uuid().nullable(),
})
