const Joi = require('joi'); const { pageQuery, limitQuery } = require('../../utils/pagination.validation'); const createRoleSchema = Joi.object({ name: Joi.string().max(100).required(), description: Joi.string().allow(null, '').optional(), is_active: Joi.boolean().default(true), permission_ids: Joi.array().items(Joi.number().integer().positive()).optional(), view_modules: Joi.array().items(Joi.string().max(50)).optional(), }); const updateRoleSchema = Joi.object({ name: Joi.string().max(100).optional(), description: Joi.string().allow(null, '').optional(), is_active: Joi.boolean().optional(), }).min(1); const assignPermissionsSchema = Joi.object({ permission_ids: Joi.array().items(Joi.number().integer().positive()).default([]), }); const permissionMatrixSchema = Joi.object({ matrix: Joi.array() .items( Joi.object({ module_id: Joi.number().integer().positive().required(), actions: Joi.object({ view: Joi.boolean().required(), create: Joi.boolean().required(), edit: Joi.boolean().required(), delete: Joi.boolean().required(), approve: Joi.boolean().required(), export: Joi.boolean().required(), }).required(), }) ) .min(1) .required(), }); const listRolesQuerySchema = Joi.object({ page: pageQuery(), limit: limitQuery(), search: Joi.string().allow('').optional(), is_active: Joi.boolean().optional(), }); module.exports = { createRoleSchema, updateRoleSchema, assignPermissionsSchema, permissionMatrixSchema, listRolesQuerySchema, };