// src/validators/usuarioRoles.validators.js
const { body, param, query } = require('express-validator');

// GET /api/usuario-roles?user_id=&rol_id=
const listUsuarioRolValidator = [
  query('user_id').optional().isInt({ gt: 0 }),
  query('rol_id').optional().isInt({ gt: 0 }),
];

// GET /api/usuario-roles/:id_usuario
const userParamValidator = [param('id_usuario').isInt({ gt: 0 })];

// POST /api/usuario-roles/assign
const assignValidator = [
  body('id_usuario').isInt({ gt: 0 }).withMessage('id_usuario > 0'),
  body('id_rol').isInt({ gt: 0 }).withMessage('id_rol > 0'),
];

// DELETE /api/usuario-roles/:id_usuario/:id_rol
const revokeValidator = [
  param('id_usuario').isInt({ gt: 0 }),
  param('id_rol').isInt({ gt: 0 }),
];

// PUT /api/usuario-roles/:id_usuario  (reemplazar completamente los roles del usuario)
const replaceRolesValidator = [
  param('id_usuario').isInt({ gt: 0 }),
  body('roles').isArray({ min: 0 }).withMessage('roles debe ser array'),
  body('roles.*').isInt({ gt: 0 }).withMessage('cada rol debe ser int > 0'),
];

module.exports = {
  listUsuarioRolValidator,
  userParamValidator,
  assignValidator,
  revokeValidator,
  replaceRolesValidator,
};
