/**
 * ========================================
 * VALIDADORES DE AUTENTICACIÓN
 * ========================================
 *
 * Este módulo define las reglas de validación para las rutas de autenticación.
 * Usa express-validator para validar y sanitizar los datos de entrada.
 *
 * FLUJO DE USO:
 * 1. Se aplica el validador como middleware en la ruta
 * 2. express-validator verifica cada campo según las reglas
 * 3. handleValidation recoge los errores y responde o continúa
 *
 * ORIGEN: Se importa en auth.routes.js
 * DESTINO: Se usa como middleware antes de la lógica de la ruta
 *
 * EJEMPLO:
 *   router.post('/register', registerValidator, handleValidation, async (req, res) => {
 *     // Si llega aquí, los datos ya están validados
 *   });
 */

const { body } = require('express-validator');

/**
 * ========================================
 * registerValidator
 * ========================================
 * Valida los datos para registrar un nuevo usuario
 *
 * CAMPOS REQUERIDOS:
 * - nombre: string, no vacío (se elimina espacios con trim)
 * - email: string, formato email válido
 * - password: string, mínimo 6 caracteres
 *
 * ORIGEN: Se usa en POST /api/auth/register
 * DESTINO: Si hay errores, handleValidation devuelve 400; si no, continúa
 */
const registerValidator = [
  body('nombre')
    .trim()                                    // Elimina espacios al inicio/fin
    .notEmpty()                                // No puede estar vacío
    .withMessage('Nombre requerido'),

  body('email')
    .isEmail()                                 // Verifica formato email
    .withMessage('Email inválido'),

  body('password')
    .isLength({ min: 6 })                      // Mínimo 6 caracteres
    .withMessage('Mínimo 6 caracteres'),
];

/**
 * ========================================
 * loginValidator
 * ========================================
 * Valida los datos para login
 *
 * CAMPOS REQUERIDOS:
 * - email: string, formato email válido
 * - password: string, no vacío
 *
 * ORIGEN: Se usa en POST /api/auth/login
 * DESTINO: Si hay errores, handleValidation devuelve 400; si no, continúa
 */
const loginValidator = [
  body('email')
    .isEmail()
    .withMessage('Email inválido'),

  body('password')
    .notEmpty()
    .withMessage('Password requerido'),
];

// ========================================
// EXPORTACIÓN
// ========================================
module.exports = { registerValidator, loginValidator };
